一、jstack (linux下特有)html
能夠觀察到jvm中當前全部線程的運行狀況和線程當前狀態java
jstack 2083linux
輸出內容以下:jvm
二、jmap (linux下特有,也是很經常使用的一個命令)工具
觀察運行中的jvm物理內存的佔用狀況。spa
參數以下:線程
-heap :打印jvm heap的狀況
-histo: 打印jvm heap的直方圖。其輸出信息包括類名,對象數量,對象佔用大小。
-histo:live : 同上,可是隻答應存活對象的狀況
-permstat: 打印permanent generation heap狀況翻譯
jmap -dump:format=b,file=dumpfile.hprof <pid> 3d
將日誌信息輸出到當前路徑,文件名dumpfile.hprof pid 進程號日誌
MAT 工具:
https://www.cnblogs.com/larack/p/6071209.html
三、jstat
這是jdk命令中比較重要,也是至關實用的一個命令,能夠觀察到classloader,compiler,gc相關信息
具體參數以下:
-class:統計class loader行爲信息
-compile:統計編譯行爲信息
-gc:統計jdk gc時heap信息
-gccapacity:統計不一樣的generations(不知道怎麼翻譯好,包括新生區,老年區,permanent區)相應的heap容量狀況
-gccause:統計gc的狀況,(同-gcutil)和引發gc的事件
-gcnew:統計gc時,新生代的狀況
-gcnewcapacity:統計gc時,新生代heap容量
-gcold:統計gc時,老年區的狀況
-gcoldcapacity:統計gc時,老年區heap容量
-gcpermcapacity:統計gc時,permanent區heap容量
-gcutil:統計gc時,heap狀況
-printcompilation:不知道幹什麼的,一直沒用過。
通常比較經常使用的幾個參數是:
jstat -class 2083 1000 10 (每隔1秒監控一次,一共作10次)
參數解釋:
Options — 選項,咱們通常使用 -gcutil 查看gc 狀況
vmid — VM 的進程號,即當前運行的java 進程號
interval– 間隔時間,單位爲秒或者毫秒
count — 打印次數,若是缺省則打印無數次
S0 — Heap 上的 Survivor space 0 區已使用空間的百分比
S1 — Heap 上的 Survivor space 1 區已使用空間的百分比
E — Heap 上的 Eden space 區已使用空間的百分比
O — Heap 上的 Old space 區已使用空間的百分比
P — Perm space 區已使用空間的百分比
YGC — 從應用程序啓動到採樣時發生 Young GC 的次數
YGCT– 從應用程序啓動到採樣時 Young GC 所用的時間( 單位秒 )
FGC — 從應用程序啓動到採樣時發生 Full GC 的次數
FGCT– 從應用程序啓動到採樣時 Full GC 所用的時間( 單位秒 )
GCT — 從應用程序啓動到採樣時用於垃圾回收的總時間( 單位秒)