JMap與JStack

weixin_34262482發表於2014-02-25

用JMap和JStack做堆dump和執行緒dump

命令

1. jmap -dump:format=b,file=filename pid
jmap -dump:format=b,file=jmap0225.bin 18646

 

jmap -histo<:live> pid : 檢視當期那 heap 的物件

sudo -u tomcat jmap -histo 1234 | sudo -u tomcat tee /tmp/histo.log

 

jmap --heap pid : 檢視 heap 結構

 

2. jstack pid >> file

jstack 18646 >> jstackfile

出現錯誤

well-known file is not secure

需要將執行命令的使用者改為啟動tomcat執行緒使用者, 如下

sudo -u tomcat jmap -dump:file=filename pid

------

使用jstack分析步驟

1. top 檢視java程式

2. top -p <java-pid> -H 檢視消耗cpu的執行緒

3. <thread-id> 轉為 十六進位制

3. sudo -u tomcat jstack <java-pid> | grep -A 10 <0x thread-id> 檢視執行狀況

相關文章