Finalize()清理与垃圾收集器从内存中删除对象

Chr*_*yen 3 java garbage

我正在阅读有关finalize()方法的内容并且很好奇:

在finalize中清理对象(将它们设置为NULL)和从内存中删除对象的任务有什么区别?

ste*_*ert 10

在finialize中清理对象(将它们设置为NULL)的任务之间有什么区别

设置为null将删除对该对象的ONE引用.如果存在对对象的更多引用,则允许(不要求)垃圾收集器移除该对象

并从内存中删除对象?

在java中没有明确的方法来删除(销毁,删除)一个对象.垃圾收集器会在他喜欢的时候做.特别是从删除最后一个引用到删除/销毁对象的时间是不确定的

需要设置引用的finalize方法.当垃圾收集器调用完成对象时,无论如何它的引用都会很快消失.

在我很长的java体验中,我从未编写过自己的finalize方法.

如果您的对象正在处理os资源,则会出现编写自己的finalize方法有意义的罕见场合.但是,通常您使用标准包进行操作系统访问