主要介紹jdk命令行工具,參考自《深入理解java虛擬機》
4.2.1 jps虛擬機進程狀況工具
jps——JVM Process Status Tool:用來列出正在運行的虛擬機進程
4.2.2 jstat虛擬機統(tǒng)計信息監(jiān)視工具
jstat——JVM Statistics Monitoring Tool:用來監(jiān)視虛擬機的各種運行狀態(tài)信息,具體包括類裝載,內(nèi)存,垃圾收集,JIT編譯等運行數(shù)據(jù),主要用來在運行期定位虛擬機性能問題。
jstat命令格式:
jstat [ option vmid [intervals [s/ms] [count] ] ]
說明:
(1)option:希望查詢的虛擬機信息,如:
-class : 類裝載,卸載數(shù)量,總空間,類裝載耗費時間等
-gc : java堆狀況,包括eden,兩個survior,老年代,永久代等的容量,已用空間,GC時間合計等。
(2)vmid:進程id(可以通過jps命令或任務(wù)管理器獲得)
(3)interval : 代表查詢間隔,默認(rèn)單位:毫秒
(4)count:查詢次數(shù)
例:jstat -gc 2764就可以查看該進程的gc信息。
4.2.3 jinfo Java配置信息工具
jinfo:用來實時的查看和調(diào)整虛擬機的各項參數(shù)
命令格式:jinfo [ option ] pid
如:查詢 CMSInitiatingOccupancyFraction參數(shù)值:
-flag CMSInitiatingOccupancyFraction 1444
結(jié)果:-XX:CMSInitiatingOccupancyFraction=85
修改: -flag CMSInitiatingOccupancyFraction=86 1444
注意:jinfo以及后面的jmap在windows平臺下都可能會有一些限制。
4.2.4 jmap Java內(nèi)存映像工具
jmap——Memory Map for Java:用于生成堆轉(zhuǎn)儲快照(一般稱為heapdump或dump文件),以及查詢finalize執(zhí)行隊列,Java堆和永久代的詳細(xì)信息,如空間使用率,當(dāng)前使用的收集器等。
命令格式: jmap [ option ] vmid
option舉例:
-dump:生成java堆轉(zhuǎn)儲快照,格式為:-dump:[live,] format=b, file=<filename>
-finalizerinfo: 等待執(zhí)行finalize方法的對象隊列,windows下無效。
例:jmap -dump:format =b,file=eclipse.bin 2477
4.2.5 jhat 虛擬機堆轉(zhuǎn)儲快照分析工具
jhat——JVM Heap Analysis Tool:用來與jmap搭配使用,來分析jmap的堆轉(zhuǎn)儲快照,并將結(jié)果顯示在本地瀏覽器中(如localhost:7000),但一般不會用jhat分析,因為(1)分析工作費時費力,一般不會直接在服務(wù)器上做,(2)有很多更直觀更強大的替代工具(VisualVM,Eclipse Memory Analyzer)。
4.2.6 jstack Java堆棧跟蹤工具
jstack——Stack Trace for Java: 用于生成虛擬機當(dāng)前時刻的線程快照(每一條線程正在執(zhí)行的方法堆棧的集合,一般稱為threaddump或javacore文件)并以此來定位線程出現(xiàn)長時間停頓的原因,如死鎖,死循環(huán),等待外部資源等。
命令格式:jstack [ option ] vmid
option:
-F:當(dāng)正常輸出的請求不被響應(yīng)時,強制輸出線程堆棧
-l: 除堆棧外顯示關(guān)于鎖的附加信息
-m: 如果調(diào)用到本地方法的話,可以顯示c/c++的堆棧。