JVM虚拟机系列 - 常用JVM命令和工具(网上汇总集锦)

通过案例切入

1.CPU百分比怎么定位?

可以使用arthas去定位。

通过在dashboard界面,就可以看出那个线程占用cpu的比比较高,所以这里线程的名字一定要有意义。

假如说是gc线程,那么可能是gc出了问题,要去观察gc日志,看是不是full gc。

如果是业务线程,可以通过thread命令,thread指定线程ID,查看线程堆栈,根据堆栈信息,再进一步定位代码。

JVM虚拟机系列 - 常用JVM命令和工具(网上汇总集锦)_第1张图片

JVM虚拟机系列 - 常用JVM命令和工具(网上汇总集锦)_第2张图片

2.频繁FGC怎么定位?

可以通过jmap命令定位,命令列表:https://www.cnblogs.com/kongzhongqijing/articles/3621163.html

可以通过jmap定位到有哪些大对象以及有哪些对象的数量。

另外一个是使用MAT工具分析,需要生成dump文件,但是生成dump文件的过程非常耗时,应用会无响应,建议线上应用切掉流量后保留现场再执行。

命令以及工具

  1. https://juejin.im/post/59e6c1f26fb9a0451c397a8c 这里罗列了比较全的工具和命令

  2. https://console.perfma.com/  perfma,寒泉子开发的产品

  3. https://www.cnblogs.com/hama1993/p/10580581.html  cpu火焰图生成工具,可以快速定位到性能损耗点

  4. 开启jdk,NMT打开 --XX:NativeMemoryTracking=detail,但是这个有性能损耗。

大厂案例

https://tech.meituan.com/2017/12/29/jvm-optimize.html

你可能感兴趣的:(Java)