Linux下實用的JAVA內存泄露監控命令及工具

1、Linux 命令

一、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 — 從應用程序啓動到採樣時用於垃圾回收的總時間( 單位秒)

相關文章
相關標籤/搜索