JVM Monitor Tool—jvisualvm
通过 jvisualvm 查看 jvm 内部详细信息
jvisualvm -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.86.46.252
查看哪个线程使用 cpu 最多
ps -mp 2633 -o THREAD,tid,time | sort -rn
找到占用 cpu 时间最多的线程。然后将线程 id 转换成16进制格式:
printf "%x\n" 3626
e18
最后用 jstack 查看线程的运行 stack:
jstack 2633 |grep e18 -A 30