hat是用來分析jmap生成dump文件的命令,jhat內置了應用服務器,可以通過網頁查看dump文件分析結果,jhat一 般是用在離線分析上。
一、jps
jps 是(JAVA process Status Tool), Java版的ps命令,查看java進程及其相關的信息,如果你想找到一個java進程的 pid,那可以用jps命令替代linux中的ps命令了,簡單而方便。
jps [options] [hostid]
options參數解釋:
- -l : 顯示進程id,顯示主類全名或jar路徑
- -q : 顯示進程id
- -m : 顯示進程id, 顯示JVM啟動時傳遞給mAIn()的參數
- -v : 顯示進程id,顯示JVM啟動時顯示指定的JVM參數
hostid :
主機或其他服務器ip
最常用示例:
- jps -l 輸出jar包路徑,類全名
- jps -m 輸出main參數
- jps -v 輸出JVM參數
二、jinfo
jinfo是用來查看JVM參數和動態修改部分JVM參數的命令。
命令格式:
jinfo [option] <pid>
options參數解釋:
no options 輸出所有的系統屬性和參數
- -flag 打印指定名稱的參數
- -flag [+|-] 打開或關閉參數
- flag = 設置參數
- -flags 打印所有參數
- -sysprops 打印系統配置
三、jstat
jstat命令是使用頻率比較高的命令,主要用來查看JVM運行時的狀態信息,包括內存狀態、垃圾回收等。
命令格式:
jstat [option] VMID [interval] [count ]
其中VMID是進程id,interval是打印間隔時間(毫秒),count是打印次數(默認一直打印)
option參數解釋:
- -class class loader的行為統計
- -compiler HotSpt JIT編譯器行為統計
- -gc 垃圾回收堆的行為統計
- -gccapacity 各個垃圾回收代容量(young,old,perm)和他們相應的空間統計
- -gcutil 垃圾回收統計概述
- -gccause 垃圾收集統計概述(同-gcutil),附加最近兩次垃圾回收事件的原因
- -gcnew 新生代行為統計
- -gcnewcapacity 新生代與其相應的內存空間的統計
- -gcold 年老代和永生代行為統計
- -gcoldcapacity 年老代行為統計
- -printcompilation HotSpot編譯方法統計
四、 jstack
jstack是用來查看JVM線程快照的命令,線程快照是當前JVM線程正在執行的方法堆棧集合。使用jstack命令可以定 位線程出現長時間卡頓的原因,例如死鎖,死循環等。jstack還可以查看程序崩潰時生成的core文件中的stack信 息。
命令格式:
jstack [options] option
參數解釋:
- -F 當使用jstack 無響應時,強制輸出線程堆棧。
- -m 同時輸出java堆棧和c/c++堆棧信息(混合模式)
- -l 除了輸出堆棧信息外,還顯示關于鎖的附加信息
cpu占用過高問題:
1.使用Process Explorer工具找到cpu占用率較高的線程
2.在thread卡中找到cpu占用高的線程id
3.線程id轉換成16進制
4.使用jstack -l 查看進程的線程快照
5.線程快照中找到指定線程,并分析代碼
五、jmap
jmap可以生成 java 程序的 dump 文件, 也可以查看堆內對象示例的統計信息、查看 ClassLoader 的信息以及 finalizer 隊列。
命令格式:
jmap [option] (連接正在執行的進程)
option參數解釋:
如果使用不帶選項參數的jmap打印共享對象映射,將會打印目標虛擬機中加載的每個共享對象的起始 地址、 映射大小以及共享對象文件的路徑全稱。
- -heap 打印java heap摘要
- -histo[:live] 打印堆中的java對象統計信息
- -clstats 打印類加載器統計信息
- -finalizerinfo 打印在f-queue中等待執行finalizer方法的對象
- -dump: 生成java堆的dump文件 dump-options: live 只轉儲存活的對象,如果沒有指定則轉儲所有對象 format=b 二進制格式 file= 轉儲文件到
六、jhat
hat是用來分析jmap生成dump文件的命令,jhat內置了應用服務器,可以通過網頁查看dump文件分析結果,jhat一 般是用在離線分析上。
命令格式
jhat [option][dumpfile]
option參數解釋:
- -stack false: 關閉對象分配調用堆棧的跟蹤
- -refs false: 關閉對象引用的跟蹤
- -port : HTTP服務器端口,默認是7000
- -debug : debug級別
- -version 分析報告版本