黑马程序员技术交流社区
标题:
终结处理和垃圾回收
[打印本页]
作者:
曹艺先-热爱编程
时间:
2012-11-17 22:20
标题:
终结处理和垃圾回收
编写一个名为Temp类,此类的状态可以是“满的”或者是“空的”。其终结条件是:对象被清理时必须处于空状态。编写一个方法以检验终结条件是否成立。在main()中测试Temp可能发生的几种使用方式。
作者:
凊係柈泩
时间:
2012-11-18 12:24
public class Temp {
//判断标记
boolean checked = false;
public Temp(boolean checked) {
super();
this.checked = checked;
}
void checkInfo(){
checked = false;
}
protected void finalize(){
if(checked){
System.out.println("Error:checked null");
}else{
try {
//正常时调用基类finalize();
super.finalize();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建对象,调用checkInfo方法
Temp temp = new Temp(true);
temp.checkInfo();
new Temp(true);
//强制执行垃圾回收器
System.gc();
}
}
我用了finalize()的方法来回收垃圾对象,因为在程序运行完毕后一些对象就变成了垃圾,java并不会马上采用回收机制将这些对象回收,这时我用到了finalize提示让虚拟机立即回收这些垃圾,清理了内容,创建Temp对象调用了checkInfo方法由于程序错误并未执行,并由system.gc强制终止执行垃圾回收器,而第二个对象传入的是真执行了if语句调用了父类finalize方法执行了输出语句
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2