我需要知道何时finalize()调用该方法JVM.我创建了一个测试类,当finalize()通过覆盖它来调用方法时,该测试类会写入文件.它没有被执行.谁能告诉我它没有执行的原因?
如果我finalize()从程序代码中调用一个对象,当垃圾回收器处理这个对象时,JVM是否仍会再次运行该方法?
这将是一个近似的例子:
MyObject m = new MyObject();
m.finalize();
m = null;
System.gc()
Run Code Online (Sandbox Code Playgroud)
显式调用是否finalize()会使JVM的垃圾收集器不在finalize()对象上运行该方法m?
作为一个java初学者,我想询问是否应该将对象引用设置为null,或者在大型项目中调用finalize方法?
例如,
while( obj... some code here){
//code stuff
}
obj = null; // or obj.finalize();
Run Code Online (Sandbox Code Playgroud)
由于我完成了,obj 并没有更多的参考,它应该怎么办呢?将其设置为null或调用finalize();?
我读了java文档,但这段话The finalize method is never invoked more than once by a Java virtual machine for any given object.让我很困惑.这是否意味着即使我使用它,它也不会做任何事情,除非GC决定这样做?然后,我决定obj将null 设置为null吗?
这一切都假设它是一个大型项目,并且范围尚未结束,以便GC自行解除分配.谢谢.