关于Sun GC的问题。 Sun FAQ(1.4.2旧版)指出,吞吐量收集器不使用MaxTenuringThreshold(MTT)参数。它仅用于CMS。
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html(12) 如果我的应用程序有中长期或长期存活的对象该怎么办?
- 在年轻代收集后幸存的对象具有复制成本(年轻代收集的算法的一部分是将任何幸存的对象复制)。中长期或长期存活的对象可能会被复制多次。使用-XX选项MaxTenuringThreshold来确定复制成本。使用-XX:MaxTenuringThreshold = 0立即将幸存于年轻代收集的对象移动到老年代。如果这提高了应用程序的性能,则长期存活对象的复制成本是显著的。请注意,吞吐量收集器不使用MaxTenuringThreshold参数。
我不知道如何验证这个问题,但如果是真的,那么吞吐量收集器是如何确定何时将年轻对象提升到老年代的?是否每次年轻代填满时都会执行(换句话说,MTT = 0?)。