jdk 命令行工具: jps, jstat, jmap
jps 命令(JavaVirtualMachineProcessStatusTool)
jstat 命令(jvm Statistics Monitor Tool)
jstack 命令(jvm stack trace)
jmap 命令(jvm Memory Map)
统计指定进程的GC收集情况
jstat -gcutil 14063 2000 10
命令详解:
14063 : 进程ID
2000:收集周期
10:收集次数

S0 :幸存区0 使用比例,百分比
S1 :幸存区1使用比例,百分比
E :eden区使用比例,百分比
O :Old区使用比例,百分比
P :持久代 (老版本JVM)使用比例,百分比
M :元数据区(新版本JVM)使用比例,百分比
YGC(单位.次):年轻代垃圾回收总次数。从启动到现在。
YGCT(单位.秒):年轻代垃圾回收总耗时。从启动到现在。
FGC:老年代垃圾回收总次数。从启动到现在。
FGCT(单位.秒):老年代垃圾回收总耗时。从启动到现在。
GCT(单位.秒):垃圾回收总耗时
延伸阅读:jstat命令使用(有这一篇就够了)https://blog.csdn.net/li396864285/article/details/94380718
排查JVM 内CPU使用过高线程
top 查看CPU使用率最高进程:top
jstack 打印jvm线程栈:jstack 8424 > /tmp/jstack.txt
top -H 找到进程内线程CPU使用率排名:top -H -p8424
将CPU使用率高的线程PID转换为十六进制:printf "%x\n” 14065 输出得到:36f1
在线程栈文件内查找线程栈详情 grep -C 20 “36f1” /tmp/jstack.txt
延伸阅读:https://my.oschina.net/liangxiao/blog/1523467
其他
jdk 提供的内存监控工具: jConsole, jVisualVM
eclipse 提供的内存分析工具: mat
google 的监控堆外内存工具: gperftools
性能压测工具: jmeter
查看进程内存: smaps, pmap, gdb
sun 推出的针对 java 的动态追踪工具: btrace