Visual GC是一個Java 內存使用分析與GC收集的可視化工具插件

一:整個區域分為三部分:spaces、graphs、histogram
1 spaces區域:代表虛擬機內存分布情況。從圖中可以看出,虛擬機被分為Perm、Old、Eden、S0、S1
注意:如果對每個區域基本概念不是很熟悉的可以先了解下java虛擬機運行時數據區這篇文字。
相關原理可以參考這篇博文《【轉】Java內存與垃圾回收調優》
1.1 perm:英文叫做Permanent Generation,我們稱之為永久代。(根據深入java虛擬機作者說明,這里說法不是不是很正確,因為hotspot虛擬機的設計團隊選擇把GC分代收集擴展至此而已,正確的應該叫做方法區或者非堆)。
1.1.1 通過VM Args:-XX:PermSize=128m -XX:MaxPermSize=256m 設置初始值與最大值
1.2 heap:java堆(Java heap)。它包括老年代(圖中Old區域)和新生代(圖中Eden/S0/S1三個統稱新生代,分為Eden區和兩個Survivor區域),他們默認是8:1分配內存
1.2.1 通過VM Args:-xms512m -Xmx512m -XX:+HeapDumpOnOutofMemoryError -Xmn100m -XX:SurvivorRatio=8 設置初始堆內存、最大堆內存、內存異常打印dump、新生代內存、新生代內存分配比例(8:1:1),因為Heap分為新生代跟老年代,所以512M-100M=412M,老年代就是412M(初始內存跟最大內存最好相等,防止內存不夠時擴充內存或者Full GC,導致性能降低)
2 Graphs區域:內存使用詳細介紹
2.1 Compile Time(編譯時間):6368compiles 表示編譯總數,4.407s表示編譯累計時間。一個脈沖表示一次JIT編譯,窄脈沖表示持續時間短,寬脈沖表示持續時間長。
2.2 Class Loader Time(類加載時間): 20869loaded表示加載類數量, 139 unloaded表示卸載的類數量,40.630s表示類加載花費的時間
2.3 GC Time(GC Time):2392collections表示垃圾收集的總次數,37.454s表示垃圾收集花費的時間,last cause表示最近垃圾收集的原因
2.4 Eden Space(Eden 區):括號內的31.500M表示最大容量,9.750M表示當前容量,后面的4.362M表示當前使用情況,2313collections表示垃圾收集次數,8.458s表示垃圾收集花費時間
2.5 Survivor 0/Survivor 1(S0和S1區):括號內的3.938M表示最大容量,1.188M表示當前容量,之后的值是當前使用情況
2.6 Old Gen(老年代):括號內的472.625M表示最大容量,145.031M表示當前容量,之后的87.031表示當前使用情況,79collections表示垃圾收集次數 ,28.996s表示垃圾收集花費時間
2.7 Perm Gen(永久代):括號內的256.000M表示最大容量,105.250M表示當前容量,之后的105.032M表示當前使用情況
3 Histogram區域:survivor區域參數跟年齡柱狀圖
3.1 Tenuring Threshold:表示新生代年齡大於當前值則進入老年代
3.2 Max Tenuring Threshold:表示新生代最大年齡值。
3.3 Tenuring Threshold與Max Tenuring Threshold區別:Max Tenuring Threshold是一個最大限定,所有的新生代年齡都不能超過當前值,而Tenuring Threshold是個動態計算出來的臨時值,一般情況與Max Tenuring Threshold相等,如果在Suivivor空間中,相同年齡所有對象大小的總和大於Survivor空間的一半,則年齡大於或者等於該年齡的對象就都可以直接進入老年代(如果計算出來年齡段是5,則Tenuring Threshold=5,age>=5的Suivivor對象都符合要求),它才是新生代是否進入老年代判斷的依據。
3.4 Desired Survivor Size:Survivor空間大小驗證闕值(默認是survivor空間的一半),用於Tenuring Threshold判斷對象是否提前進入老年代。
3.5 Current Survivor Size:當前survivor空間大小
3.6 histogram柱狀圖:表示年齡段對象的存儲柱狀圖
3.7 如果顯示指定-XX:+UseParallelGC --新生代並行、老年代串行收集器 ,則histogram柱狀圖不支持當前收集器
引用:
http://www.Oracle.com/technetwork/java/visualgc-136680.html
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
《Java性能優化權威指南》
