CPU监控:进程和线程
# 观察哪个进程CPU和内存占比高
top
# 观察进程中的线程,哪个线程CPU和内存占比高
top -Hp [pid]
# top 16837
# top -Hp 16837
# 定位具体java进程
jps
# jps -l
jstack -l [pid]
# jstack -l 16837
-Xloggc:/path/to/log/dir/gc-%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause
# 每500个毫秒打印GC的情况
jstat -gc [pid] 500
# jstat -gc 16837 500
#出现 OOME 时生成堆 dump, 生成堆文件地址
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dir/
jmap -dump:format=b,file=/path/to/dir/dumpfile [pid]
# jmap -dump:format=b,file=serviceDump.dat 16837
注意:jmap 在执行转存储jmap -dump
时,JVM是暂停服务的,所以对线上的运行会产生影响
jmap -histo [pid]
# jmap -histo 16837 | head -20
其他方式: arthas
# 启动 http://localhost:7000/
# 注意 -J-Xms 之间没有空格
jhat -port 7000 -J-Xmx2048m 文件名
其他方式: jvisualvm
mat
jprofiler
by Sven Augustus https://my.oschina.net/langxSpirit