我对Java垃圾收集器的了解是,它可以处理所需的一切,但我关心的是效率。
据我所知,其他一些语言,如Python,可以通过实际操作来帮助垃圾收集器:
objectReference = none
这是否适用于Java,这样程序员可以通过将变量分配给 null 来以高效的方式释放堆内存?如果是,与C使用free()函数手动释放内存相比,这有多高效?
答案 0 :(得分:2)
变量在超出范围后不再存在,例如当方法返回时,null
提前变量很少有任何好处。
字段的生命周期等于拥有对象,因此如果对象将继续存在一段时间,但您知道将不再需要字段引用,那么null
该字段可能允许引用对象的早期GC。
是否打扰这样做取决于拥有对象将保持多长时间,以及引用对象的大小。它很少值得。
答案 1 :(得分:0)
设置对null sorta的引用有帮助。如果这是对象的唯一引用,那么垃圾收集器可以在它认为合适时自由清理该对象的内存。最好的情况是,当一个好的时间用System.gc()
释放内存时,你可以向垃圾收集器发出信号,但它仍然是最终的建议并且不会强迫它。