給jdk自帶的jvisualvm安裝Visual GC插件,遇到We're sorry the java.net site has closed(我們很抱歉java.net網站已經關閉)
1、找到新的更新地址visualvm新訪問地址:https://visualvm.github.io/index.html
進入“Plugins”,找到對應自己JDK版本的更新地址

2、進入jvisualvm的插件管理 "工具"-"插件" 在"設置"中修改url地址為剛才我們在ithub上找到的對應我們JDK版本的地址修改成功后,可用插件即可刷新出來

3、安裝VisualGC插件

4、重啟即可看到VisualGC
一:整個區域分為三部分:spaces、graphs、histogram
1,spaces區域:代表虛擬機內存分布情況。從圖中可以看出,虛擬機被分為Perm、Old、Eden、S0、S1
注意:如果對每個區域基本概念不是很熟悉的可以先了解下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是一個最大限定,所有的新生代年齡都不能超過當前值,而TenuringThreshold是個動態計算出來的臨時值,一般情況與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柱狀圖不支持當前收集器