Java笔记丨19 对象清除与垃圾回收

对象的自动清除

垃圾回收

对象回收是由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();

}

猜你喜欢

转载自blog.csdn.net/qq_42968048/article/details/84640769
今日推荐