で gc ログを有効にしてい-XX:+PrintTenuringDistribution
ます。しかし、私は以下の在職期間の分布とかなり混乱しています。
私が読んだことから、最初の gc の年齢 1 (1 GC から生き残った) には 10532656 バイトがあります。2 番目の gc では、年齢 2 で 9178824 バイト (2 つの GC から存続)。1 回目と 2 回目の GC の間に一部のオブジェクトが停止したため、これは問題ありません。
しかし、2 番目の GC では、16101552 バイトが経過時間 3 にあり、最初の GC の経過時間 2 には 14082976 バイトしかありません。なぜこの数が増えているのかわかりません。年齢 n のすべてのバイトは、前の GC の年齢 n-1 から来るべきではありませんか? または私はそれらの数字を誤解しましたか?
ありがとう。
2013-10-19T19:46:30.244+0800: 169797.045: [GC2013-10-19T19:46:30.244+0800: 169797.045: [ParNew
Desired survivor size 87359488 bytes, new threshold 4 (max 4)
- age 1: 10532656 bytes, 10532656 total
- age 2: 14082976 bytes, 24615632 total
- age 3: 15155296 bytes, 39770928 total
- age 4: 13938272 bytes, 53709200 total
: 758515K->76697K(853376K), 0.0748620 secs] 4693076K->4021899K(6120832K), 0.0756370 secs] [Times: user=0.42 sys=0.00, real=0.07 secs]
2013-10-19T19:47:10.909+0800: 169837.710: [GC2013-10-19T19:47:10.909+0800: 169837.711: [ParNew
Desired survivor size 87359488 bytes, new threshold 4 (max 4)
- age 1: 9167144 bytes, 9167144 total
- age 2: 9178824 bytes, 18345968 total
- age 3: 16101552 bytes, 34447520 total
- age 4: 21369776 bytes, 55817296 total
: 759449K->63442K(853376K), 0.0776450 secs] 4704651K->4020310K(6120832K), 0.0783500 secs] [Times: user=0.43 sys=0.00, real=0.07 secs]
編集:
これは、オブジェクトの要求で競合状態が発生するため、jvm 自体のバグとして確認されています。
詳細な議論はここで見つけることができます:
http://mail.openjdk.java.net/pipermail/hotspot-gc-use/2013-October/001635.html