性能分析2~jstat命令

       上一篇文章top命令,估計大家並沒有感覺到top命令有啥用,這一篇文章我們結合jstat命令來講解一下;個人習慣,上來直接講理論已經不適合我這種很難靜下心來的同志了,我們直接看實例:

假設我們使用top命令發現進程id爲15813的進程運行有問題,我們繼續使用jstat命令來分析:


上面的信息是這個進程的jvm信息,我們一一介紹:

S0C:Survivor space 0 區大小 (其他環境顯示:S0  — Heap上的 Survivor space 0 區已使用空間的百分比)

S1C:Survivor space 1 區大小 (其他環境顯示:S1— Heap上的 Survivor space 1 區已使用空間的百分比)

S0U:Survivor space 0 區已經使用大小;

S1U:Survivor space 1 區已經使用大小;

EC:eden區大小 (其他環境顯示:E   — Heap上的 Eden space 區已使用空間的百分比)

EU:eden區已經使用大小

OC:老年代區大小(其他環境顯示:O   — Heap上的 Old space 區已使用空間的百分比)

OU:老年代已經使用大小

PC:永久代區大小(其他環境顯示:P— Perm space 區已使用空間的百分比)

PU:永久代區已經使用大小

YGC — 從應用程序啓動到採樣時發生 Young GC 的次數

YGCT– 從應用程序啓動到採樣時 Young GC 所用的時間(單位秒)

FGC — 從應用程序啓動到採樣時發生 Full GC 的次數

FGCT– 從應用程序啓動到採樣時 Full GC 所用的時間(單位秒)

GCT — 從應用程序啓動到採樣時用於垃圾回收的總時間(單位秒)

根據上面的這些信息,我們能分析出該進程的運行情況,gc頻率和時間是否正常,各個代的使用是否正常、分配的空間是否合理等等,關於jvm的一些信息,可以參考我的jvm專欄。


分析完一個實例後,我們再看定義:

JSTAT命令:(JVM統計監測工具)

一般的top指令基本上滿足不了這樣的需求,因爲它主要監控的是總體的系統資源,很難定位到java應用程序。

Jstat是JDK自帶的一個輕量級小工具。全稱“Java Virtual Machine statistics monitoring tool”,它位於java的bin目錄下,主要利用JVM內

建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控。可見,Jstat是輕量級、的

專門針對JVM的工具,非常適用。Jstat是一個極強的監視VM內存工具。可以用來監視VM內存內的各種堆和非堆的大小及其內存使用

量。jstat工具特別強大,有衆多的可選項,詳細查看堆內各個部分的使用量,以及加載類的數量。使用時,需加上查看進程的進程id

和所選參數。

語法結構:
Usage: jstat -help|-options
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

 參數解釋:
Options — 選項,我們一般使用 -gcutil 查看gc情況
vmid    — VM的進程號,即當前運行的java進程號
interval– 間隔時間,單位爲秒或者毫秒
count   — 打印次數,如果缺省則打印無數次

分析完定義,我們再來分析我給的截圖的性能分析:

很顯然,我給的截圖只是我本地的運行環境,根本沒有什麼壓力,所以這個截圖展示的進程運行很正常,yong-gc的次數38此,full-gc

次數7次,並且這兩種gc所耗費的時間、以及單次gc的時間都在可接受範圍的。

我們暫時不深入在出現性能問題時,如何優化,因爲目前我也只懂點皮毛,以後懂得多了再分享。

上面的截圖,看起來太長,我們可以單獨只查詢部分區域的情況:


jstat   -gcnew pid:查詢new對象的信息

jstat   -gcold   pid:查詢old對象的信息

這樣我們能更清楚的觀測每個區域的使用情況。

還有一些有用的選項:

Options選項
-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:在Java的方法被編譯時,打印其跟蹤信息




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章