Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 JAVA编程思想中的程序,有些问题
king_wjb





发贴: 27
积分: 0
于 2005-12-26 10:50 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
在JAVA编程思想第四章有这么一段代码:

class Chair {
static boolean gcrun = false;
static boolean f = false;
static int created = 0;
static int finalized = 0;
int i;
Chair() {
i = ++created;
//%%%%%%System.out.println(created);
if(created == 47)
System.out.println("Created 47");
}
protected void finalize() {
if(!gcrun) {
gcrun = true;
System.out.println(
"Beginning to finalize after " +
created + " Chairs have been created");
}
if(i == 47) {
System.out.println(
"Finalizing Chair #47, " +
"Setting flag to stop Chair creation");
f = true;
}
finalized++;
if(finalized >= created)
System.out.println(
"All " + finalized + " finalized");
}
}

public class Garbage {
public static void main(String[] args) {
if(args.length == 0) {
System.err.println("Usage: \n" +
"java Garbage before\n or:\n" +
"java Garbage after");
return;
}
while(!Chair.f) {
new Chair();
new String("To take up space");
}

System.out.println(
"After all Chairs have been created:\n" +
"total created = " + Chair.created +
", total finalized = " + Chair.finalized);
if(args[0].equals("before")) {
System.out.println("gc():");
System.gc();
System.out.println("runFinalization():");
System.runFinalization();
}
System.out.println("bye!");
if(args[0].equals("after"))
System.runFinalizersOnExit(true);
}
}

正常情况下输出为:
Created 47
Beginning to finalize after 3957 Chairs have been created
Finalizing Chair #47, Setting flag to stop Chair creation
All 32882 finalized
After all Chairs have been created:
total created = 32883, total finalized = 32882
gc():
All 32883 finalized
runFinalization():
bye!

但是我在打%的地方增加一行代码后(去掉注释),出现如下结果:
...
61781
61782
61783
61784
61785
Finalizing Chair #47, Setting flag to stop Chair creation
All 61785 finalized
61786
After all Chairs have been created:
total created = 61786, total finalized = 61785
gc():
All 61786 finalized
runFinalization():
bye!

请问这是怎么回事?


why edited on 2005-12-26 11:35


话题树型展开
人气 标题 作者 字数 发贴时间
5658 JAVA编程思想中的程序,有些问题 king_wjb 2245 2005-12-26 10:50

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923