1. 找出 java进程pid,比如 11327
2. 使用jstack 看下 锁持有情况
/usr/java/latest/bin/jstack -l 11327
3. 输出java堆栈信息,以及c/c++堆栈信息
/usr/java/latest/bin/jstack -m 11327
4. 找出最耗cpu的线程
top -Hp 11327
找出 11341 耗时 最长
5. 将线程id转换为十六进制
printf "%x " 11341
结果为: 2c4d
6. 过滤出线程对应的堆栈信息
/usr/java/latest/bin/jstack 11327 |grep 2c4d
7. 使用jmap查看进程堆内存使用情况,包括gc算法,堆配置参数和各代中堆内存使用情况
/usr/java/latest/bin/jmap -heap 11327
8. 使用jmap查看堆内存中对象数目,大小统计直方图,如果带上live则只统计活对象,如下:
/usr/java/latest/bin/jmap -histo:live 11327 | more
以上为分析过程中使用的命令及参数,