查看服務gc次數jstat -gc 9 5000 ,9是運行服務的pid 5000表示5秒輸出一次
jstat命令命令格式:
jstat [Options] vmid [interval] [count]
參數說明:
Options,選項,我們一般使用 -gcutil 查看gc情況
vmid,VM的進程號,即當前運行的java進程號
interval,間隔時間,單位爲秒或者毫秒
count,打印次數,如果缺省則打印無數次
結果說明
顯示內容說明如下(部分結果是通過其他其他參數顯示的,暫不說明):
S0C:年輕代中第一個survivor(倖存區)的容量 (字節)
S1C:年輕代中第二個survivor(倖存區)的容量 (字節)
S0U:年輕代中第一個survivor(倖存區)目前已使用空間 (字節)
S1U:年輕代中第二個survivor(倖存區)目前已使用空間 (字節)
EC:年輕代中Eden(伊甸園)的容量 (字節)
EU:年輕代中Eden(伊甸園)目前已使用空間 (字節)
OC:Old代的容量 (字節)
OU:Old代目前已使用空間 (字節)
PC:Perm(持久代)的容量 (字節)
PU:Perm(持久代)目前已使用空間 (字節)
YGC:從應用程序啓動到採樣時年輕代中gc次數
YGCT:從應用程序啓動到採樣時年輕代中gc所用時間(s)
FGC:從應用程序啓動到採樣時old代(全gc)gc次數
FGCT:從應用程序啓動到採樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啓動到採樣時gc用的總時間(s)
NGCMN:年輕代(young)中初始化(最小)的大小 (字節)
NGCMX:年輕代(young)的最大容量 (字節)
NGC:年輕代(young)中當前的容量 (字節)
OGCMN:old代中初始化(最小)的大小 (字節)
OGCMX:old代的最大容量 (字節)
OGC:old代當前新生成的容量 (字節)
PGCMN:perm代中初始化(最小)的大小 (字節)
PGCMX:perm代的最大容量 (字節)
PGC:perm代當前新生成的容量 (字節)
S0:年輕代中第一個survivor(倖存區)已使用的佔當前容量百分比
S1:年輕代中第二個survivor(倖存區)已使用的佔當前容量百分比
E:年輕代中Eden(伊甸園)已使用的佔當前容量百分比
O:old代已使用的佔當前容量百分比
P:perm代已使用的佔當前容量百分比
S0CMX:年輕代中第一個survivor(倖存區)的最大容量 (字節)
S1CMX :年輕代中第二個survivor(倖存區)的最大容量 (字節)
ECMX:年輕代中Eden(伊甸園)的最大容量 (字節)
DSS:當前需要survivor(倖存區)的容量 (字節)(Eden區已滿)
TT: 持有次數限制
MTT : 最大持有次數限制
導出dump文件
線上故障一定要先導出dump文件保留好現場,jmap -dump:format=b,file=salary1 9
安裝mat
MAT是有兩種安裝方式。
一種安裝方式是將MAT當做eclipse的插件進行安裝:啓動Eclipse --> Help --> Eclipse Marketplace,然後搜索Memory Analyzer,安裝,重啓eclipse即可。
另外一種安裝方式是將MAT作爲一個獨立的軟件進行安裝:去官網http://www.eclipse.org/mat/downloads.php,根據操作系統版本下載最新的MAT。下載後解壓就可以運行了。
通過mat分析dump文件
導入mat
cat給出分析結果
在ch.qos.logback.ext.spring.DelegatingLogbackAppender 上右鍵選擇show objects by class 下選擇by outgoing references