網上有很詳細的關於各種JVM參數說明,本篇只記錄很常用的幾個參數,為了方便以后自己查閱
1、JVM三種參數類型
- 標准參數。如 -version、-help
- X參數。如 -Xms、-Xmx
- XX參數。如-XX:+PrintGC
2、XX參數數值類型
- 布爾類型。如-XX:+PrintGCDetails,其中 + 和 - 分別表示開啟/關閉某個屬性,PrintGCDetails表示打印GC詳情
- KV設值類型。如-XX:NewSize=256M,設置年輕代空間大小為256M
3、常用參數
X參數:
XX參數:
- -XX:NewSize:設置年輕代最小空間大小
- -XX:MaxNewSize:設置年輕代最大空間大小
- -XX:PermSize:設置永久代最小空間大小
- -XX:MaxPermSize:設置永久代最大空間大小
- -XX:NewRatio:設置年輕代和老年代的比值。默認值-XX:NewRatio=2,表示年輕代與老年代比值為1:2,年輕代占整個堆大小的1/3
- -XX:SurvivorRatio:設置年輕代中Eden區Survivor區的容量比值。默認值-XX:SurvivorRatio=8,表示Eden : Survivor0 : Survivor1 = 8 : 1 : 1
4、GC日志
在設置JVM參數的時候,可以設置GC打印日志參數:-XX:+PrintGCDetails。下面GC輸出日志信息:
日志含義如下:
GC:表示進行了一次Minor GC,即從年輕代空間(包括 Eden 和 Survivor 區域)回收內存
Allocation Failure:在年輕代中沒有足夠的空間能夠存儲新的數據
Full GC (Ergonomics):表示進行了一次Full GC,即清理整個堆空間(包含年輕代和老年代)
PSYoungGen: 1024K->1024K(1536K):垃圾回收器是Paralle Scavenge,年輕代區GC前->GC后該區域已使用量,后面的1536表示該區域總量
ParOldGen: 4032K->4032K(4096K):老年代區,GC前->GC后該區域已使用量,后面的4096表示該區域總量
5056K->5056K(5632K):GC前 -> GC后Java堆的使用量,后面的5632表示Java堆總量
Metaspace: 3117K->3117K(1056768K):JDK8中取消了永久代,新增了一個叫元空間(Metaspace)的區域,對應的還是JVM規范中的方法區(主要存放一些class和元數據的信息),該數據表示該區GC前后使用量
0.0214352 secs:暫停STW 時間,即GC的時間
Times: user=0.02 sys=0.01, real=0.02 secs:更為詳細的時間占比統計
參考地址:
http://www.yayihouse.com/yayishuwu/chapter/1615