Java虛擬機以內存監控與故障處理工具

本文內容來自《深刻理解Java虛擬機》,主要是自身學習,用於記錄重點,方便回憶,複習。對應《深刻理解Java虛擬機》第四章,JDK提供的經常使用工具。java

1、JDK下提供的工具

一、jps (JVM Process Status) 

JDK的bin目錄下,用於查詢LVMID(列出虛擬機進程號)linux

參數:bash

-q   只顯示進程號。           函數

-m  輸出啓動時傳遞給主類main()函數的參數。工具

-l    輸出主類的全名,若是進程執行的jar包,則輸出jar包路徑。學習

-v   輸出虛擬機啓動時JVM參數spa

二、jstat(JVM Statistics Monitoring Tool)虛擬機統計信息監視工具

能夠顯示本地或者遠程虛擬機進程中類的裝載、內存、垃圾收集、JIT編譯等運行數據。線程

格式:3d

jstat option vmid [interval [count]]複製代碼

若是查詢本地,vmid爲jps命令中查出來的LVMID,若是遠程,則vmid爲code

[protocol:][//]lvmid[@localhost[:port]/servername]複製代碼

interval爲監控的間隔時間,count爲監控的次數。

經常使用option:

-class 監視類裝載、卸載數量、總空間、類裝載所消耗的時間

-gc      監控Java堆情況,各區使用量,gc次數,gc時間等信息

-gcutil 做用通-gc,顯示的數據爲百分比。

-gcnew 新生代GC狀況

-gcold   老年代GC狀況

例子:

S0、S1:Survivor區、E Edent區、O:老年區、YGC:MinorGC次數、YGCT:MinorGC的時間、FGC:Full GC次數、FGCT:Full GC的時間、GCT:GC總時間


三、jmap(Memory Map for Java)用於生成堆轉儲快照(heapdump、dump文件)

除生成dump文件外,還可查詢finalize執行隊列、Java堆信息。

-dump       生成Java堆轉存儲快照,格式以下

jmap -dump:format=b,file=filename 3039
複製代碼

-finalizeinfo    只能linux平臺下使用,顯示真正等待F-Queue中等待執行finalize方法的對象。

-heap             只能linux平臺下使用,顯示Java堆詳細信息。

附:

-XX:HeapDumpOnOutOfMemoryError參數、讓虛擬機在OOM異常時自動生成dump文件

四、jstack(Stack Trace for Java)堆棧跟蹤工具

用於生成虛擬機當前時刻的線程快照(threaddump、javacore文件)

jstack [option] vmid

參數:

-F     正常輸出的請求不被響應時,強制輸出線程堆棧。

-l      除堆棧外,顯示關於鎖的附加信息。

-m    若是調用本地方法的話,能夠顯示C/C++的堆棧。

五、jconsole Java監視與管理控制

啓動命令文件爲JavaHome/bin/jconsole,可用於監控內存、cpu、線程、是否死鎖等。



六、VisualVM綜合處理工具

啓動命令文件爲 JavaHome/bin/jvisualvm


相關文章
相關標籤/搜索