0

可以确保垃圾收集器会销毁所有不需要和未使用的对象,如果我们手动取消对象会怎样。List<String> = null ,此操作是否会对性能产生负面或正面影响?

我在 Java 上。谢谢。

4

3 回答 3

1

不是内存处理细节方面的专家,但我可以分享我所知道的。GC 将收集未使用的任何内容。因此,当您消除对对象的最后一个引用(通过显式取消)时,您会将其标记为垃圾回收。这并不能保证它会立即被收集。

您可以显式尝试调用 GC,但您会看到很多人反对它。我的理解是,对 GC 的调用充其量是不可靠的。GC 和 Java 的全部意义在于,作为程序员,您无需过多担心内存分配。至于性能,除非您对堆空间有严格的限制,否则您不应该注意到 GC 活动。

于 2012-04-05T10:32:22.027 回答
1

垃圾回收是 Java 回收游荡对象占用的空间的一种方式。通过这样做,它 [Java] 确保您的应用程序永远不会耗尽内存(尽管我们不能保证程序永远会耗尽内存)。

建议将其留在 JVM 上。

阅读相关:将 Java 对象设置为 null 有什么作用吗?

于 2012-04-05T10:33:49.697 回答
1

显式null化几乎没有区别。通常 GC 可以可靠地检测到何时无法再到达对象,因此可以进行 GCd。

特别是,nulling 堆栈(即内部方法)变量绝对没有帮助。运行时自动检测何时需要它们以及何时不需要它们是微不足道的。null在极少数情况下,堆(即类内部)变量可能会有所帮助,但这是一个罕见的例外,并且可能弊大于利(在代码易读性/可维护性方面)。

另请注意,nulling 不保证对象是否或何时会被 GCd。

于 2012-04-05T10:34:58.357 回答