有一个关于Sun的问题。Sun (旧的1.4.2)表示吞吐量收集器不使用MaxTenuringThreshold ()参数。它只用于CMS。http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
(12)如果我的应用程序有中长性对象,我应该做什么?
我不知道如何验证这一点,但如果是真的,吞吐量收集器如何确定何时将年轻对象提升到终身生成呢?每一次年轻一代都会被填满(换句话说,MTT =0?)。
发布于 2010-08-07 03:49:42
如果您正在讨论的是一个现代的(1.6.0) Sun GC,您可以下载源代码并自己计算出到底是怎么回事。但当然,这种行为可能会随着补丁级别的不同而改变。
下面是一些最近提到-XXmaxTenuringThreshold选项的文档:
谷歌搜索中也出现了各种各样的提示。但我在网上找不到任何明确的文件或你的问题的明确答案。
发布于 2013-03-01 13:07:39
检查OpenJDK 1.6源代码中的psScavenge.cpp (= -XX:+UseParallelGC =吞吐量收集器)
if (AlwaysTenure) {
_tenuring_threshold = 0;
} else if (NeverTenure) {
_tenuring_threshold = markOopDesc::max_age + 1;
} else {
// We want to smooth out our startup times for the AdaptiveSizePolicy
_tenuring_threshold = (UseAdaptiveSizePolicy) ? InitialTenuringThreshold :
MaxTenuringThreshold;
}在这种情况下(OpenJDK 1.6),MaxTenuringThreshold不只是在-XX:+UseAdaptiveSizePolicy被激活时使用。然后,使用缺省初始值7代替。
IMHO,这个粗体的句子确实意味着JDK 1.4.2将使用默认/计算的最大值来确定何时促进年轻对象。
如果要检查值,可以使用-XX:+PrintTenuringDistribution
Desired survivor size 48286924 bytes, new threshold 10 (max 10)
- age 1: 28992024 bytes, 28992024 total
- age 2: 1366864 bytes, 30358888 total
- age 3: 1425912 bytes, 31784800 totalhttps://stackoverflow.com/questions/3427786
复制相似问题