能够get这2个命令:
#查询对应进程的线程html
top -Hp
#使用jstark打印JVM的线程信息:java
jstack -F
这两个是用来分析CPU使用率高的状况是什么致使的用的,先top查那个进程致使CPU的使用率高,而后top -Hp pid 看下具体的线程那个,再经过 jstack -F pid 打出线程的dump,记得输出到文件,jstack -F pid >dump.out ,而后使用上面top -Hp pid 出来的线程查下具体的线程是跑的什么代码。web
再补充点笔记资料:bash
#查看GC状况, jstat-gcutil 进程ID 参数oracle
jstat -gcutil 106342 1000 20
#输出信息:app
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
【内存dump】
jmap -dump:live,format=b,file=heap.bin
jmap -dump:file=/data/app/jvm_en.hprof 67492
参考资料:http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html
将生成的heap.bin文件,使用ha456.jar工具打开分析。java -jar -Xmx3000m ha456.jar
【线程dump】
jstack -m >jvm_deadlocks.txt
jstack -l >jvm_listlocks.txt
参考资料http://docs.oracle.com/javase/6/docs/technotes/tools/share/jstack.html
使用top -H -p 找出某进程中要分析的线程ID,而后将线程ID转换为16进制后,在线程dump文件中搜索相关信息jvm
参考资料,来自:https://www.cnblogs.com/shengulong/p/8513652.htmlsvg