【轉】JVM可視化工具插件---Visual GC


 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性能優化權威指南》 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM