换句话说:
我需要知道在调用System.gc()
对象实例(未收集)之后是否在调用System.gc()
之前以与调用{{1}}之前相同的方式在代之间分发。
谢谢,
答案 0 :(得分:5)
在完整GC之后,System.gc()可能触发或不触发,
简而言之,System.gc()唯一不会在代之间更改对象的时间是
如果这可能是调用System.gc()是邪恶的另一个原因
主要是因为它会影响性能并且你获得的回报很少。注意:RMI可以定期触发完整的收集,以确保清理分布式对象,但它会尽量将其保持在最低限度。
答案 1 :(得分:1)
首先,System.gc()
只是你想要GC的JVM的提示,它可能不会触发一个(例如,如果使用带有Hotspot的-XX:+DisableExplicitGC
),你不应该依赖它做了什么 - 无论如何,JVM通常都知道得更好。
如果它确实触发了GC,那么它就像任何其他GC一样,如果它们符合标准(例如在幸存者空间中花费了足够的代数),对象可能会从年轻人升级到老一代。