Java基礎-考察JVM內部結構的經常使用工具介紹java
做者:尹正傑
git
版權聲明:原創做品,謝絕轉載!不然將追究法律責任。github
咱們能夠經過jvisualvm.exe考察jvm內部結構。而jvisualvm.exe這個程序存放在JDK的安裝目錄下的bin目錄中。固然在JDK的安裝目錄下的bin目錄中還有jmap以及jconsole兩個工具都是能夠查看JVM的堆內存結構的喲!接下來我會爲你們展現這三個工具的方法,他們各自有各自的優勢,若是是Windows開發環境的話,我我的比較喜歡jvisualvm的,若是在Linux開發環境下,推薦你們使用jmap工具查看堆內存結構。安全
一.jvisualvm.exe安裝Visual GC插件jvm
在使用jvisualvm.exe過程當中須要安裝visualgc插件才能看到詳細信息,具體安裝步驟以下: ide
1>.以管理員身份運行jvisualvm.exe工具
2>.點擊工具--->插件測試
3>.添加新的URL(https://visualvm.github.io/uc/8u131/updates.xml.gz)spa
4>.取消以前的插件操作系統
5>.安裝Visual GC插件
6>.點擊下一步
7>.點擊安裝
8>.等待安裝完畢
9>.安裝成功後會自動激活
二.經過jvisualvm.exe考察jvm內部結構
1>.打開VisualJVM
2>.編輯Edit Configurations...
3>.配置年老代,伊甸區,倖存一區和倖存二區大小均爲100M,點擊ok(-Xmx400m -Xms400m -XX:MaxNewSize=300m -XX:NewSize=300m -XX:SurvivorRatio=1)
調優JVM經常使用參數 ---------------------------- -Xss2m //棧空間,默認是1m -Xmx500m //最大堆 -Xms500m //初始堆 -Xmn150m //設置年輕帶的大小 ,每一個區至少要保留512K的空間。 -XX:NewSize=300m //年輕代初始空間-Xmn300m -XX:MaxNewSize=300m //年輕代最大空間 -XX:NewRatio=1 //設置年老代是年輕的倍數,默認是2. -XX:SurvivorRatio=2 //設置伊甸區是單個倖存區的倍數,默認是6.
4>.編寫致使棧內存溢出的代碼並以Debug模式運行
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.jvm; 8 9 import org.junit.Test; 10 11 public class TestJVM { 12 13 @Test 14 public void testStackMemoryOverflow(){ 15 recursion(1); 16 } 17 18 19 20 public void recursion(int n){ 21 System.out.println(n); 22 recursion(n); 23 n++; 24 } 25 }
5>.查看Java中的VisualIVM
三.Linux操做系統經過jmap考察jvm內部結構
1>.查看當前運行的JAVA進程
2>.jmap用法:jmap -heap pid
3>.查看JVM的堆中的信息
四.經過jconsole考察堆結構
1>.運行jconsole工具
2>.選擇咱們測試的進程
3>.選擇不安全的鏈接
4>.查看對內存信息