目錄頁:https://mp.csdn.net/postedit/95937156
1. 常用的命令行工具
1.1. jinfo
jinfo常用於查看或設置JVM參數,執行jinfo -help查看命令格式。
參數:
- pid:進程號
- executable core 產生core dump文件
- [server-id@]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