谁能解释一下关于终结和垃圾回收的问题
谁能解释一下关于终结和垃圾回收的问题。下面是一个书上的例子:
//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");
}
}
最好结合这个程序来解释一下,谢谢!