分析工具
1、jps 顯示指定系統內的所有JVM進程
2、jstat 收集JVM各方面的運行數據
3、jinfo 顯示JVM配置信息
4、jmap 堆快照
5、jhat 分析headdump文件
6、jstack 顯示JVM的線程快照
jstat -class pid
- -XX:+PrintGCDetails:輸出GC的詳細信息
- -XX:+PrintGCTimeStamps:輸出GC的時間信息
- -XX:+PrintGCApplicatonStoppedTime:GC造成的應用暫停的時間
- -Xloggc:文件路徑/gc.log:輸出到文件
1、獲取pid
lsof -i:port
2、根據獲取到pid,查看gc的相關信息
jstat -gc pid 2000 5 查看gc信息,每兩秒刷新一次,總刷新五次。其相關熟悉列舉如下:
S0C:Survivor0 的容量
S1C:Survivor1, 與S0C一樣
S0U: Survivor0 的利用情況,utilization
S1U:
EC:eden 新生代使用情況
EU:
OC,OU:老年代的一些情況
PC,PU:Permanent space 當前永久代的情況
YGC: Numbers of young generation GC events
YGCT: Young generation Garbage collection time
FGC : full gc 次數
FGCT: full gc 時間
GCT: total gc 時間
3、查看線程信息
ps -mp pid -o THREAD,tid,time|wc -l 查看線程數
ps -mp pid -o THREAD,tid,time | sort -rn | head -10 線程列表,並按照CPU占用高的線程排序
4、將線程tid轉成16進制
printf "%x\n" tid
5、查看線程占內存信息
jstack pid |grep 16進制的線程id -A 30
