在Java中,有没有办法markGC 下一次垃圾收集的对象clean up cycle?
我听说设置一个对象null
不再有效。
不,你不能。如果另一个变量引用了它,您会期望发生什么?
请注意,您无法设置object为 null - 您只能设置一个variable为空。如果另一个变量仍然拥有对该对象的引用,它仍然不符合垃圾回收的条件。
如果您认为需要这样做,这可能意味着您误解了您的数据 - 或者您的代码中的某个地方可能存在泄漏(例如,您只添加条目的列表,由静态变量引用 - 这些条目当类加载器处于活动状态时,永远没有资格进行垃圾收集)。
每个 JVM 都有自己的 GC,但在 Hotspot 中,下次 GC 在该对象当前“生存”的一代上运行时,该对象将被垃圾收集(假设它没有终结器,这会使事情变得复杂)。如果该对象位于“年轻”一代,那么这可能很快就会发生 - 如果它位于“老”代,则可能需要更长的时间。
您可能想查看Java 6 GC 调优文档 http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html了解更多信息,当然,从那时起,OpenJDK 7 等的情况已经发生了变化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)