JVM性能調優監控工具

jstack 棧分析

A.找出進程

[root@c100 ~]# jps |grep jar
2181jar

2.找出最耗CPU的線程

[root@c100 ~]# top -Hp 2181
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                   
 2181 root      20   0 2322404 537720  11620 S  0.0 13.8   0:00.02 java                                                                                      
 2182 root      20   0 2322404 537720  11620 S  0.0 13.8   0:00.39 java                                                                                      
 2183 root      20   0 2322404 537720  11620 S  0.0 13.8   0:00.34 java                                                                                      
 2184 root      20   0 2322404 537720  11620 S  0.0 13.8   0:00.34 java                                                                                      
 2185 root      20   0 2322404 537720  11620 S  0.0 13.8   0:00.19 java

3. 線程ID轉換爲16進制

[root@c100 ~]# printf "%x\n" 2182
886

#4. 輸出堆棧信息並分析耗時緣由

[root@c100 ~]# jstack 2181 | grep 886
"DestroyJavaVM" prio=10 tid=0x00007f6564008800 nid=0x886 waiting on condition [0x0000000000000000]

B. jmap 堆內存分析

1. 打印持久代對象信息

輸出:類加載器名稱、對象是否存活(不可靠)、對象地址、父類加載器、已加載的類大小等信息java

jmap -permstat 2181

2. 使用jmap -heap pid查看進程堆內存使用狀況,包括使用的GC算法、堆配置參數和各代中堆內存使用狀況。

jmap -heap 2181

3. 使用jmap -histo[:live] pid查看堆內存中的對象數目、大小統計直方圖,若是帶上live則只統計活對象

jmap -histo:live 2181 | more

4. 用jmap把進程內存使用狀況dump到文件中用jhat分析查看

jmap -dump:format=b,file=/tmp/dump.dat 2181 
jhat -port 10086 /tmp/dump.dat

C. jstat(JVM統計監測工具)

語法格式以下
jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
  • vmid是虛擬機ID,在Linux/Unix系統上通常就是進程ID。
  • interval是採樣時間間隔。
  • count是採樣數目。
  • 好比下面輸出的是GC信息、進程218一、採樣間隔500ms、採樣數爲10
[root@c100 ~]# jstat -gc 2181 500 10
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   
11776.0 11264.0  0.0    0.0   300544.0  4120.7   78336.0    37001.1   68608.0 35256.5     15    0.309   2      0.558    0.866
11776.0 11264.0  0.0    0.0   300544.0  4120.7   78336.0    37001.1   68608.0 35256.5     15    0.309   2      0.558    0.866
11776.0 11264.0  0.0    0.0   300544.0  4120.7   78336.0    37001.1   68608.0 35256.5     15    0.309   2      0.558    0.866
11776.0 11264.0  0.0    0.0   300544.0  4120.7   78336.0    37001.1   68608.0 35256.5     15    0.309   2      0.558    0.866
11776.0 11264.0  0.0    0.0   300544.0  4120.7   78336.0    37001.1   68608.0 35256.5     15    0.309   2      0.558    0.866
  • S0C、S1C、S0U、S1U:Survivor 0/1區容量(Capacity)和使用量(Used)
  • EC、EU:Eden區容量和使用量
  • OC、OU:年老代容量和使用量
  • PC、PU:永久代容量和使用量
  • YGC、YGT:年輕代GC次數和GC耗時
  • FGC、FGCT:Full GC次數和Full GC耗時
  • GCT:GC總耗時
相關文章
相關標籤/搜索