JVM虚拟机系列 - 常用JVM命令和工具(网上汇总集锦)
通过案例切入
1.CPU百分比怎么定位?
可以使用arthas去定位。
通过在dashboard界面,就可以看出那个线程占用cpu的比比较高,所以这里线程的名字一定要有意义。
假如说是gc线程,那么可能是gc出了问题,要去观察gc日志,看是不是full gc。
如果是业务线程,可以通过thread命令,thread指定线程ID,查看线程堆栈,根据堆栈信息,再进一步定位代码。
2.频繁FGC怎么定位?
可以通过jmap命令定位,命令列表:https://www.cnblogs.com/kongzhongqijing/articles/3621163.html
可以通过jmap定位到有哪些大对象以及有哪些对象的数量。
另外一个是使用MAT工具分析,需要生成dump文件,但是生成dump文件的过程非常耗时,应用会无响应,建议线上应用切掉流量后保留现场再执行。
命令以及工具
-
https://juejin.im/post/59e6c1f26fb9a0451c397a8c 这里罗列了比较全的工具和命令
-
https://console.perfma.com/ perfma,寒泉子开发的产品
-
https://www.cnblogs.com/hama1993/p/10580581.html cpu火焰图生成工具,可以快速定位到性能损耗点
-
开启jdk,NMT打开 --XX:NativeMemoryTracking=detail,但是这个有性能损耗。