JVM常用命令:
jps
顯示當前運行的java進程以及相關(guān)參數(shù)
jps參數(shù):
jsp -l pid
-q 只顯示pid剩蟀,不顯示class名稱,jar文件名和傳遞給main 方法的參數(shù)邻寿。
-l 輸出應(yīng)用程序main class的完整package名 或者 應(yīng)用程序的jar文件完整路徑名。
-m 輸出傳遞給main方法的參數(shù)
-v 輸出傳遞給JVM的參數(shù)
備注:也可以使用ps aux | grep 項目名 查看pid
jstack
用于生成java虛擬機當前時刻的線程快照阶冈。
分析CPU利用率100%問題
top 查看占CPU最多的進程
top -Hp pid 查詢進程下所有線程的運行情況(shift+p 按cpu排序解藻,shift+m 按內(nèi)存排序)
用printf ‘%x’ pid 轉(zhuǎn)換為16進制(加入查到的是a)
jstact查看線程快照孝治,jstack 30316 | grep -A 20 a
[推薦閱讀]http://jameswxx.iteye.com/blog/1041173
jmap
用于打印指定Java進程(或核心文件、遠程調(diào)試服務(wù)器)的共享對象內(nèi)存映射或堆內(nèi)存細節(jié)福侈。
堆Dump是反應(yīng)Java堆使用情況的內(nèi)存鏡像酒来,其中主要包括系統(tǒng)信息、虛擬機屬性肪凛、完整的線程Dump堰汉、所有類和對象的狀態(tài)等。 一般伟墙,在內(nèi)存不足翘鸭、GC異常等情況下,我們就會懷疑有內(nèi)存泄露戳葵。這個時候我們就可以制作堆Dump來查看具體情況就乓。分析原因。
查看java堆(heap)使用情況:jmap -heap 31846
查看java堆(heap)中的對象數(shù)量及大泄八浮:jmap -histo 31846
將內(nèi)存使用的詳細情況輸出到文件: jmap -dump:format=b,file=heapDump pid然后使用jhat -port 5000 heapDump在瀏覽器中訪問:http://localhost:5000/查看詳細信息
jinfo
jinfo可以輸出java進程生蚁、core文件或遠程debug服務(wù)器的配置信息∠纷裕可以使用jps -v替換
jstat
是用于監(jiān)控虛擬機各種運行狀態(tài)信息的命令行工具邦投。他可以顯示本地或遠程虛擬機進程中的類裝載、內(nèi)存擅笔、垃圾收集志衣、JIT編譯等運行數(shù)據(jù)。
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
參數(shù)解釋:
Option — 選項猛们,我們一般使用 -gcutil 查看gc情況
vmid — VM的進程號念脯,即當前運行的java進程號
interval– 間隔時間,單位為秒或者毫秒
count — 打印次數(shù)阅懦,如果缺省則打印無數(shù)次
例子:jstat -gc 5828 250 5
javap
可以對代碼反編譯和二,也可以查看java編譯器生成的字節(jié)碼徘铝。