Java基礎-考察JVM內部結構的經常使用工具介紹

             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 }
TestJVM.java 文件內容

5>.查看Java中的VisualIVM

 

三.Linux操做系統經過jmap考察jvm內部結構

1>.查看當前運行的JAVA進程

 

2>.jmap用法:jmap -heap pid

3>.查看JVM的堆中的信息

 

四.經過jconsole考察堆結構

1>.運行jconsole工具

 

2>.選擇咱們測試的進程

 

3>.選擇不安全的鏈接

4>.查看對內存信息

相關文章
相關標籤/搜索