-XX:+ PrintTenuringDistribution不会打印每个年龄段的大小

时间:2015-05-23 22:47:18

标签: java garbage-collection jvm

我写了一个简单的程序,它无限地将对象加入到集合中,我想看看PrintTenuringDistribution选项的标准输出:

public static void main(String[] args) {
    while (true) {
        persons.add(new Person("jorik", "kornev"));
    }
}

作为程序输出我得到了:

Desired survivor size 5242880 bytes, new threshold 7 (max 15)

Desired survivor size 5242880 bytes, new threshold 7 (max 15)

Desired survivor size 5242880 bytes, new threshold 7 (max 15)

其实我建议我会得到这样的东西:

Desired survivor size 75497472 bytes, new threshold 15 (max 15)
- age   1:   19321624 bytes,   19321624 total
- age   2:      79376 bytes,   19401000 total
- age   3:    2904256 bytes,   22305256 total

我正在使用带有VM选项的JDK 1.7.0_79:

-XX:+PrintTenuringDistribution -XX:+UseParallelGC

那么,你能否告诉我我做错了什么以及如何获得所需的输出。

谢谢,Evgeniy

1 个答案:

答案 0 :(得分:5)

根据this blog post它按预期工作。

  

嗯,这是预期的行为而不是错误。吞吐量   收藏家不像其他收藏家那样使用年龄表。和   由于这个原因,年龄直方图信息不打印   吞吐量收集器。使用吞吐量收集器,我们只能   查看所需的幸存者大小,阈值年龄和最大值   PrintTenuringDistribution选项的阈值年龄。