您的位置:首页 > 编程语言 > Java开发

Java- 对象清楚与垃圾回收

2015-08-22 20:48 232 查看

对象的自动清除

也叫垃圾回收(garbage collection)

对象回收是由Java虚拟机的垃圾回收线程来完成的。

系统如何判断一个对象是否为垃圾?

任何对象都有一个引用计数器,当其值为0时,说明该对象可以回收。

System.gc()方法

它是System类的static方法

它可以要求系统进行垃圾回收,但仅仅只是“建议”,即不能强制系统进行垃圾回收。

finalize()方法

Java中没有“析构方法(destructor)”,但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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: