jvm问题跟踪

  • 查看系统日志,是否有exception 发生
    top 命令查看当前系统状态


    image.png

如果某个进程占大量cpu或内存MEM,获取对应的进程号(pid)或者通过jps获得对应应用的进程号,例如: pid = 18541,再通过进程号拿到进程对应的线程情况
ps -mp 18541 -o THREAD,tid,time

image.png

或者
top -Hp 18541

image.png

比如拿到可疑的线程号 18616,将其转换为16进制

printf "%x\n" 18616

48b8
然后使用jstack 查看对应的线程信息
jstack 18541 | grep 48b8

image.png

  • 查看系统gc情况
    jstat -gcutil 11977 3000
    查看进程号为11977的应用gc情况,隔3秒打印
    image.png

s0,s1为年轻代的两个survivor 空间占比
e 为年轻代的Eden空间占比
o 为old 老年代空间占比
m 为metaspace空间
ccs ??
YGC 年轻化gc次数
YGCT 年轻代gc耗时
FGC Full GC 次数
FGCT FullGC 耗时
GCT 总的GC耗时

如果FullGC频繁,可以用jmap dump系统内存快照
jmap -dump:format=b,file=heapdump 11977

或者
jmap -histo 11977 > jmap.log
dump 下来的信息可以用jhat 或者 jvisualvm 或者mat上查看

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容