最近試圖增加堆空間和新舊gen大小的比例,我看到來自jstat -gccapacity
的混淆結果,它顯示的容量比我預期的要小得多。在調整JVM堆大小後解釋jstat輸出
JVM(1.5.0_16)以-server -Xms2048m -Xmx2048m -XX:NewRatio=2
開頭。它運行在Solaris 5.10 amd64主機上。大約10GB的可用內存。因此,從我讀過的內容來看,JVM應該能夠充分利用2GB的堆空間。
看着jstat -gcutil
我觀察到所有填滿了幾次導致垃圾收集的世代。例如:
Timestamp S0 S1 E O P YGC YGCT FGC FGCT GCT
66150.4 0.00 51.09 56.95 90.33 54.85 6291 58.922 7 22.826 81.748
我想過會導致JVM將所有代都擴展到它們的完整大小。然而,jstat -gccapacity
生產:
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC
700416.0 700416.0 86016.0 1408.0 1408.0 39104.0 1398784.0 1398784.0 1398784.0 1398784.0 16384.0 65536.0 38912.0 38912.0 6338 7
隨後的運行中表現出的價值NGC/S0C/S1C/EC變化:
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC
700416.0 700416.0 86016.0 1472.0 1472.0 39104.0 1398784.0 1398784.0 1398784.0 1398784.0 16384.0 65536.0 38912.0 38912.0 6380 7
700416.0 700416.0 106496.0 1792.0 1856.0 97024.0 1398784.0 1398784.0 1398784.0 1398784.0 16384.0 65536.0 38912.0 38912.0 6433 7
700416.0 700416.0 106496.0 1792.0 1792.0 96064.0 1398784.0 1398784.0 1398784.0 1398784.0 16384.0 65536.0 38912.0 38912.0 6436 7
據我所知,容量數據,是生成和總規模利用率數字顯示了這代人的分配情況。因此,上述結果告訴我,新的gen min和max容量都是(NGCMN/MGCMX)684MB,舊的gen min和max是1366MB(OGCMN/OGCMX)。讓我感到困惑的是新一代的能力。所以我的問題:
- 爲什麼EC + S0C + S1C == NGC? (41,920!= 86016)
- 爲什麼NGC顯着小於NGCMN/MGCMX?
- 這是因爲最大堆大小正在被打(這將把它放在1,488MB,來自NGC + OGC + PGC),如果是的話會導致下限?我能找到的所有文檔都說Solaris 64位JVM應該能夠使用4GB。
- 如果最大堆大小被擊中,爲什麼新一代的容量變化(全部增加或全部減少)而沒有老一代改變補償)。
其它潛在有用的jstat結果:
$ jstat -gcnew 20167
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
1536.0 1600.0 1300.3 0.0 13 15 1600.0 82880.0 30892.6 6482 60.540
$ jstat -gcnewcapacity 20167
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
700416.0 700416.0 106496.0 1472.0 233472.0 233472.0 1408.0 700288.0 81088.0 6489 7
$ jstat -gcold 20167
PC PU OC OU YGC FGC FGCT GCT
38912.0 21426.5 1398784.0 1375651.6 6503 7 22.826 83.627
$ jstat -gcoldcapacity 20167
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
1398784.0 1398784.0 1398784.0 1398784.0 6517 7 22.826 83.779
$ jstat -gcpermcapacity 20167
PGCMN PGCMX PGC PC YGC FGC FGCT GCT
16384.0 65536.0 38912.0 38912.0 6531 7 22.826 83.925