您好,登錄后才能下訂單哦!
JDK本身提供了很多方便的JVM性能調優監控工具,除了集成式的VisualVM和jConsole,還有jps,jmap,jstat,jstack,jhat等小工具。
1. jps(Java Virtual Machine Process Status Tool)??
jps -m -l? ?列出JVM中運行的進程狀態信息(這里可以獲取某個進程的pid, 供后續命令使用)
2. jstat
jstat -gcutil pid 10s 3? ?對堆內存的使用情況、gc信息等進行實時的命令行統計
3. jstack??
查看某個Java進程內的線程堆棧信息。
jstack可以定位到線程堆棧,根據堆棧信息我們可以定位到具體代碼,所以它在JVM性能調優中使用得非常多。
使用方法參見:6. 熱點CPU
4. jmap
生成堆內存快照
jmap -heap pid? 查看進程堆內存信息,了解即可
jmap -dump:format=b,file=xxx.hprof pid? ? 把進程內存使用情況dump到文件中。Dump文件是進程的內存鏡像
jmap -dump:live,format=b,file=xxx.hprof pid? ?統計存活的對象信息
dump出來的文件可以用MAT、VisualVM等工具查看,也可以用jhat查看
5. jhat
查看dump出來的文件
jhat?-port?9998 xxx.hprof
然后就可以在瀏覽器中輸入主機地址:9998查看了,比如:http://localhost:9998
不推薦,因為有的文件很大,打開會很慢,看起來也費勁,推進用MAT分析
6. 熱點cpu? ?
cpu占用率持續的比較高
定位步驟:
jps -m -l? ? ? ? ? ? ? ? ? ?列出正在運行的進程----這里是否用top命令更好一些?top才能看出誰占用cpu最高? ? ? ? ? ? ? ? ? ? ? ?
top -H -p pid? ? ? ? ? ?找出該進程內最耗費cpu的線程
printf "%x\n" tid? ? ? 線程id轉化為16進制
jstack pid | grep 轉化為16進制的tid -A 50
備注1:展示的信息中,重點關注自己編寫的代碼,截圖給開發
備注2:有可能一次jstack不能捕捉到需要的信息,那么需要多次執行,因為抓的是那一瞬間的狀態
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。