cup佔用率高:java
第一步:找到佔用CPU太高的進程的pidlinux
使用top命令,而後按shift+p按照CPU排序工具
第二步:找到進程中消耗資源最高的線程的idspa
使用top -Hp [進程id]線程
第三步:將線程id轉換爲16進制(字母要小寫)orm
使用echo 'obase=16;[線程id]' | bc或者printf "%x\n" [線程id]
【bc是linux的計算器命令】blog
第四步:查看線程狀態信息排序
執行jstack [進程id] |grep -A 10 [線程id的16進制]」進程
第五步:導出堆棧異常信息內存
執行jstack [進程id] |grep -A 10 [線程id的16進制] > xxx.txt
下載至本地sz xxx.txt
內存佔用較高:找到內存佔用高的線程後,使用 jmap -dump:format=b,file=dumpfile.dat [pid]將內存信息down下來,pid爲線程id,使用java自帶工具
java visual vm:打開jdk/bin/jvisualvm,裝入dump文件便可;
查看某進程號下的gc狀況:jstat -gc 12538 5000
即會每5秒一次顯示進程號爲12538的java進成的GC狀況,
字段說明: 顯示內容說明以下(部分結果是經過其餘其餘參數顯示的,暫不說明): 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 : 最大持有次數限制