gpt4 book ai didi

java - GC(垃圾收集器)如何标记一个对象进行垃圾收集?

转载 作者:IT王子 更新时间:2023-10-28 23:33:16 25 4
gpt4 key购买 nike

在 Java 中,有没有办法在其下一个 cleanup 循环中标记对象以供 GC 进行垃圾回收?

我听说将对象设置为 null 不再有效。

最佳答案

不,你不能。如果另一个变量引用了它,你会期望发生什么?

请注意,您不能将 object 设置为 null - 您只能将 variable 设置为 null。如果另一个变量仍然具有对该对象的引用,则它仍然不符合垃圾回收条件。

如果您认为需要这样做,这可能意味着您误解了数据 - 或者您的代码中的某处可能存在泄漏(例如,您只添加条目的列表,由静态变量引用- 当类加载器处于 Activity 状态时,这些条目将永远无法进行垃圾回收)。

每个 JVM 都有自己的 GC,但在 Hotspot 中,对象将在下次 GC 运行到该对象当前“存在”的一代时被垃圾收集(假设它没有终结器,这会使事情复杂化)。如果对象处于“年轻”一代,那可能很快就会发生 - 如果它处于“老”一代,则可能需要更长的时间。

您可能想查看 Java 6 GC tuning documentation欲了解更多信息,当然对于 OpenJDK 7 等,事情已经发生了变化。

关于java - GC(垃圾收集器)如何标记一个对象进行垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5331422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com