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

evg*_*y44 2 java garbage-collection jvm

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

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

作为一个程序输出我得到:

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)
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

-XX:+PrintTenuringDistribution -XX:+UseParallelGC
Run Code Online (Sandbox Code Playgroud)

所以,请你告诉我我做错了什么以及如何获得所需的输出.

谢谢,Evgeniy

the*_*472 5

根据这篇博客文章,它按预期工作.

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