换句话说:
我需要知道在调用System.gc()
对象实例(未收集的)之后是否以与调用之前相同的方式在代之间分布System.gc()
。
谢谢,
在 System.gc() 可能触发也可能不触发的 Full GC 之后,
简而言之,唯一一次 System.gc() 不会在几代之间改变对象是什么时候
如果这可能是调用 System.gc() 是邪恶的另一个原因
主要是因为它会损害性能并且您获得的回报很少。注意:RMI 可以定期触发完整收集以确保清理分布式对象,但它会尝试将其保持在最低限度。
首先,这System.gc()
只是对 JVM 的一个提示,你想要一个 GC,它可能不会触发一个(例如,如果-XX:+DisableExplicitGC
与 Hotspot 一起使用),你不应该依赖它来做任何事情——无论如何,JVM 通常知道得更好。
如果它确实触发了 GC,那么它就像任何其他 GC 一样,并且如果对象满足条件(例如,在幸存者空间中花费了足够多的代),则对象可能会从年轻代提升到老年代。