《java 编程思想》上的一个例子
class Book
{ boolean checkedOut=false;
Book(boolean checkOut){checkedOut=checkOut;}
void checkIn(){checkedOut=false;}
protected void finalize()
{ if(checkedOut)
System.out.println("Error:checked out"); }}
public class TerminationCondition
{public static void main(String args[])
{Book novel=new Book(true);
novel.checkIn();
new Book(true);
System.gc();}}
书上说:“注意,System.gc()用于强制进行终结动作。即使不这么做,通过重复的执行程序(假设程序将分配大量的存储空间而导致垃圾回收动作的执行),最终也能找出错误的Book对象”我想问,为什么上面那句话要说“重复的执行程序”,只执行一次不能找出错误的Book对象吗??
class Book
{ boolean checkedOut=false;
Book(boolean checkOut){checkedOut=checkOut;}
void checkIn(){checkedOut=false;}
protected void finalize()
{ if(checkedOut)
System.out.println("Error:checked out"); }}
public class TerminationCondition
{public static void main(String args[])
{Book novel=new Book(true);
novel.checkIn();
new Book(true);
System.gc();}}
书上说:“注意,System.gc()用于强制进行终结动作。即使不这么做,通过重复的执行程序(假设程序将分配大量的存储空间而导致垃圾回收动作的执行),最终也能找出错误的Book对象”我想问,为什么上面那句话要说“重复的执行程序”,只执行一次不能找出错误的Book对象吗??
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货