在Java中释放对象

时间:2016-02-12 04:57:52

标签: java c garbage-collection free

我对Java垃圾收集器的了解是,它可以处理所需的一切,但我关心的是效率。

据我所知,其他一些语言,如Python,可以通过实际操作来帮助垃圾收集器:

objectReference = none

这是否适用于Java,这样程序员可以通过将变量分配给 null 来以高效的方式释放堆内存?如果是,与C使用free()函数手动释放内存相比,这有多高效?

2 个答案:

答案 0 :(得分:2)

变量在超出范围后不再存在,例如当方法返回时,null提前变量很少有任何好处。

字段的生命周期等于拥有对象,因此如果对象将继续存在一段时间,但您知道将不再需要字段引用,那么null该字段可能允许引用对象的早期GC。

是否打扰这样做取决于拥有对象将保持多长时间,以及引用对象的大小。它很少值得。

答案 1 :(得分:0)

设置对null sorta的引用有帮助。如果这是对象的唯一引用,那么垃圾收集器可以在它认为合适时自由清理该对象的内存。最好的情况是,当一个好的时间用System.gc()释放内存时,你可以向垃圾收集器发出信号,但它仍然是最终的建议并且不会强迫它。