对象的自动清除
垃圾回收
对象回收是由Java虚拟机的垃圾回收线程来完成的
任何对象都有一个引用计数器,当其值为0时,说明该对象可以回收
System.gc()方法
它是System类的static方法
它可以要求系统进行垃圾回收
但它仅仅是“建议”,不能强制
finalize()方法
Java中没有“析构方法”
但Object的finalize()有类似的功能
系统在回收时会自动调用对象的finalize()方法
protected void finalize() throws Throwable{}
子类的finalize()方法
可以在子类的finalize()方法释放系统资源
一般来说,子类的finalize()方法中应该调用父类的finalize()方法,以保证父类的清理工作能正常进行
try-with-resources
由于finalize()方法的调用时机不确定,所以一般不用finalize()
关闭打开的文件,清除一些非内存资源等工作需要进行处理
可以使用try-with-resources语句(JDK1.7以上)
对于实现了java.lang.AutoCloseable的对象
try(Scanner scanner=new Scanner(…)){
……
}
会自动调用其close方法,相当于
finally{
Scanner.close();
}