目錄頁:https://mp.csdn.net/postedit/95937156
1. 常用的指令行工具
1.1. jinfo
jinfo常用于檢視或設定JVM參數,執行jinfo -help檢視指令格式。
參數:
- pid:程序号
- executable core 産生core dump檔案
- [[email protected]]remote server IP or hostname 遠端的ip或者hostname,server-id标記服務的唯一性id
option:
- -flag name 輸出對應名稱的參數
- -flag [+|-]name 開啟或者關閉對應名稱的參數
- -flag name=value 設定對應名稱的參數
- -flags 輸出全部的參數
- -sysprops 輸出系統屬性
- no option 輸出全部的參數和系統屬性
1.1.1. jinfo pid
jinfo pid指令用于檢視程序的全部參數和系統屬性,會打出較多的參數資訊。
1.1.2. jinfo -flag name pid
輸出對應名稱的參數,可以檢視指定的 jvm 參數的值,減号代表該參數未生效,加号代表生效。
1.1.3. jinfo flag [+|-]name pid
開啟或者關閉對應名稱的參數,常用于無法重新開機線上應用時又需要添加啟動參數。
1.1.4. jinfo -flag name=value
如果JVM啟動參數是value值,需要使用該指令修改指定參數的值。
1.1.5. jinfo -flags pid
輸出程序全部JVM參數
1.2. jmap
當出現頻繁gc時我們會使用jmap dump出程式的記憶體占用資訊,也會使用該指令檢視堆資訊。
參數:
- executable: 産生核心dump的Java可執行檔案。
- core: 需要列印配置資訊的核心檔案。
- server-id 可選的唯一id,如果相同的遠端主機上運作了多台調試伺服器,用此選項參數辨別伺服器。
- remote server IP or hostname 遠端調試伺服器的IP位址或主機名。
下面介紹主要使用的方法
1.2.1. jmap -heap pid
用于檢視java程序堆記憶體資訊。
1.2.2. jmap -dump:format=b,file=heapdump.phrof pid
這是我們發現程式記憶體溢出或頻繁gc時經常使用的一個指令,用于生成堆轉儲快照dump檔案,需要注意的是執行過程中會暫停應用,線上系統慎用。導出dump檔案後可以使用MAT工具進行分析。連結:
https://download.csdn.net/download/u011294519/11796613
1.3. jstack
jstack指令我們經常用于檢視程序的線程狀态
jstack -l pid > file.txt