这里记录一些学到的JVM排查
最基本的:
jstack (我把它理解为java 的堆栈 )命令 查看线程的运行情况,可以查到哪一个线程出现了死锁。
jmap 查询Jvm 各个内存区域的使用情况 参数很多 比如jmap -heap pid(堆的id)
他会打印一个堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息
图片.png
jstat 命令可以查询垃圾回收的情况 特别是关注fullgc,如果fullgc比较频繁 那么就需要进行调优了
可以查到占用CPU最多的线程,定位到具体的方法,优化方法的执行。来个例子 某天你发现CPU爆满,大牛没来上班。
那么你应该怎么定位呢?
首先
1 TOP, 通过 top命令查找到这个消耗CPU最大的进程号PID 8958
有了pid
2 top -Hp pid 查到这个进程下所有的线程,列表中会显示它们的CPU 内存 占用。
3 jstack 找到具体的线程之后 你可以查看线程的具体信息。