有关JVM问题排查的可视化工具有很多,比如说JDK自带的jconsole、jvsualvm等,第三方有MAT、GChisto、GCView等。

e0f7874c121f9f2da126122b28e676d2.png


jconsole查看内存回收情况83daf25f472154f124c566de51087d28.png

jconsole工具在JDK的bin目录下。

33d61c041b0fcbed27fe31f51dc759be.png

选中自己的进程,进入,会提示不安全的链接,继续点进去

116d09df39501f4a538267a971b3fc7f.png

就会看到整个JVM的概览

image.png

可以查看线程已经内存使用情况

8a9c8d28699364aecec16e76c33c8527.png

还可以选中看JVM内存中某一块,比如说新生代的Eden区、Survivor区、老年代等。

5c9d5c374c223c137670fa143d4b8caa.png

还可以看VM概要,具体数据请看图中的内容

3d992be0ff1062b502620e5959d59451.png

远程连接请参考:

https://blog.csdn.net/u012758088/article/details/78510985

jvisualvm查看内存回收情况83daf25f472154f124c566de51087d28.png

jvisualvm工具在JDK的bin目录下。,用法和jconsole类似;

双击

3d22eedd286e6ed1fb2142d7dff2d298.png

选择我们的进程

8865a0082375705f20ad38c1c0825e90.png

这个概述的东西相对较少

image.png

监视整体情况,CPU、堆、类、线程的情况

6a828db0a70ca21da94f6c0114e68c83.png

查看线程相关的数据

69acd030b0684faea3316c14f464b029.png

进入Profiler,点击内存,然后进入分析阶段,下面就会展示内存中对象的数据

fcbb972a28a81ed05087a968cf9eec9f.png

在工作中就可以进行查看内存中对象的情况。

远程连接课请参考:

https://my.oschina.net/u/2300159/blog/812984

第三方工具83daf25f472154f124c566de51087d28.png

MAT

Java 堆内存分析工具。

GChisto

GC 日志分析工具。

GCViewer

GC 日志分析工具。

JProfiler

商用的性能分析利器。

arthas

阿里开源诊断工具。

  • https://github.com/alibaba/arthas

async-profiler

Java 应用性能分析工具,开源、火焰图、跨平台。

  • https://github.com/jvm-profiling-tools/async-profiler

关于第三方工具的使用,后面会有文章对每一个工具进行详细的演示和说明。如果把所有工具的详细步骤和使用相关注意事项都说一遍的话,篇幅量是相当大的。

持续更新中,敬请期待~