嗨:我有一个多线程 Java 应用程序。有很多临时对象。
-XX:MaxTenuringThreshold=1
,我们在启动JVM的时候放了上面的参数。这意味着所有对象将在 gc 期间存活一次,然后将其提升到老年代。我们-XX:MaxTenuringThreshold=10
可以举个例子,这样对象会在 10 次 gc 后提升到旧的 JVM 老年代。但这会在年轻 gc 期间导致不必要的复制操作(因为对象被复制“从 'eden' 到 'from'、从 'from' 到 'to'、'from'、'to' 是两个幸存者缓冲区)?
这些问题也可能意味着如果a)年轻代中有多次复制,老年代gc较少,b)老年代垃圾收集时间长但年轻代复制很少,哪一个更好?