1. 程式人生 > >JVM:JVM調優-命令學習

JVM:JVM調優-命令學習

jps

顯示系統中所有的hotspot虛擬機器程序。
格式:

jps [options] [hostid]

引數:

-l:輸出主類全名或者jar檔案
-v:輸出jvm啟動時顯式指定的引數
-m:輸出jvm啟動時傳給main函式的引數

舉例:

//查詢有erp_data 的java程序
jps -l -v -m  | grep  erp_data

jstat

使用者監控虛擬機器執行時資訊。

格式:

jstat [option] LVMID [interval] [count]

引數:

[option] : 操作引數
LVMID : 本地虛擬機器程序ID
[interval] : 連續輸出的時間間隔
[count] : 連續輸出的次數

舉例:

jstat -gc 1262 2000 20
意思每隔2000ms輸出1262的gc情況,一共輸出20次

S0C    S1C     S0U     S1U   EC       EU        OC         OU        PC       PU         YGC    YGCT    FGC    FGCT     GCT   
26112.0 24064.0 6562.5  0.0   564224.0 76274.5   434176.0   388518.3  524288.0 42724.7    320    6.417   1      0.398    6.815

S0C : survivor0區的總容量
S1C : survivor1區的總容量
S0U : survivor0區已使用的容量
S1U : survivor1區已使用的容量
EC : Eden區的總容量
EU : Eden區已使用的容量
OC : Old區的總容量
OU : Old區已使用的容量
PC 當前perm的容量 (KB)
PU perm的使用 (KB)
YGC : 新生代垃圾回收次數
YGCT : 新生代垃圾回收時間
FGC : 老年代垃圾回收次數
FGCT : 老年代垃圾回收時間
GCT : 垃圾回收總消耗時間

jmap

jmap(JVM Memory Map)命令用於生成heap dump檔案,如果不使用這個命令,還闊以使用-XX:+HeapDumpOnOutOfMemoryError引數來讓虛擬機器出現OOM的時候·自動生成dump檔案。
jmap不僅能生成dump檔案,還闊以查詢finalize執行佇列、Java堆和永久代的詳細資訊,如當前使用率、當前使用的是哪種收集器等。

jmap -dump:live,format=b,file=dump.hprof 28920
dump堆疊資訊到本地檔案
jmap -histo:live 28920 | more
列印堆的物件統計,包括物件數、記憶體大小等等 

(因為在dump:live前會進行full gc,如果帶上live則只統計活物件,因此不加live的堆大小要大於加live堆的大小 )

jstack

用於生成當前時刻的堆疊快照。
執行緒快照是當前java虛擬機器內每一條執行緒正在執行的方法堆疊的集合,生成執行緒快照的主要目的是定位執行緒出現長時間停頓的原因,如執行緒間死鎖、死迴圈、請求外部資源導致的長時間等待等。

// 列印匹配的上下5行
//11477 程序  執行緒2f47 16進位制
jstack 11477  | grep 2f47  -C5 --color

參考:
https://blog.csdn.net/ityouknow/article/details/78209205