谁能解释一下关于终结和垃圾回收的问题

kola1017 2003-08-15 11:37:27
谁能解释一下关于终结和垃圾回收的问题。下面是一个书上的例子:
//import java.lang.*;
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 47");
}

public void finalize()
{
if(!gcrun)
{
gcrun=true;
System.out.println("Beginnig to finalize after"+created+"Chairs have been created");
}
if (i==47)
{
System.out.println("Finalizing chari #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)
{
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.length>0)
{
if(args[0].equals("gc") || args[0].equals("all") )
{
System.out.println("gc():");
System.gc();
}
if (args[0].equals("finalize") || args[0].equals("all"))
{
System.out.println("runFinalizedation():");
System.runFinalization();
}
}
System.out.println("Bye");
}
}

最好结合这个程序来解释一下,谢谢!
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kola1017 2003-08-21
  • 打赏
  • 举报
回复
终于看懂了这段程序了,谢谢了。
不过现在又有一个问题想问一下了:
有这样一个代码:
class Note {
private int value;
private Note(int val) { value = val; }
public static final Note
middleC = new Note(0),
cSharp = new Note(1),
cFlat = new Note(2);
}

那new Note(0)不是在第归的调用自己的构造函数了和初始化自己的成员了吗?
Jumperr 2003-08-18
  • 打赏
  • 举报
回复
不是i=47的时候就停止产生chair,而是在清理的时候,清理到标识为47的这个chair的时候才停止。其实,在调用finalize()的时候才会更动f的值,也就是说在gc开始运行的时候。

其实这段代码就是告诉你,gc什么时候运行完全是系统自己决定的,还有就是它运行的时候要调用对象的finalize方法
kola1017 2003-08-18
  • 打赏
  • 举报
回复
to up:
是tij上的例子!
不懂的地方在:
while (!chiar.f)
{ new chiar();
new String("to take up space!");
}
当i=47的时候应该不会产生chair对象了,但是在运行是好象还是继续产生了。而且我想知道回收是什么时候开始的
Jumperr 2003-08-15
  • 打赏
  • 举报
回复
tij上的例子吧?什么地方不懂呢?
wyqiang 2003-08-15
  • 打赏
  • 举报
回复
该文章写出了
各种提示
提示就是
在线运行的情况

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧