在我们安装的JDK中,提供了一个很棒的JVM调优工具,也就是 Java VisualVM,通过它我们能够看到很多关于我们Java程序的信息。当然借助插件可以实现更为强大的调测功能,比如使用VisualGC查看 Eden,Survivor From, Survivor To区的空间使用情况,以及排查程序中那些对象造成OOM。
VisualVM位置
我们可以通过找到安装JDK的目录
D:\Java\jdk1.8\bin

或者使用cmd命令来打开图形化界面
jvisualvm
启动完成后,会有这样一个界面

安装插件
下载插件
首先我们需要到Visual的 插件官网 下载,我们需要找到自己的JDK版本

这里提供多种插件选择

VIsualGC插件,是能够让我们通过图形化的页面,来查看我们的堆内存,以及各区使用情况
MBeans浏览器插件提供的功能类似于JConsole中的MBeans浏览器:显示应用程序的MBean,显示值,操作和通知。在VisualVM中,浏览器得到了进一步的改进,以提供更好的可用性并支持最新的JMX功能。
下载Github超时可以使用该工具,https://gh-proxy.tenma.work/
下载完成后,我们把插件放在下面目录下
C:\Users\<用户>\AppData\Roaming\VisualVM\8u131

安装
然后在到我们刚刚打开的Visual VM图形化页面,点击工具 -> 插件

然后在点击已下载 -> 添加插件
,找到文件,然后选择安装

效果
检测
安装成功后,我们通过写一个代码来进行检测
/**
* OOM测试
*
*/
public class OOMTest {
public static void main(String[] args) throws InterruptedException {
List<Integer> list = new ArrayList<>();
while(true) {
Thread.sleep(10);
list.add(2140008000);
}
}
}
配置启动的JVM参数
-Xms100m -Xmx100m
最后点击Visual GC查看我们的堆内存情况
等待一会后,我们发现S1区中,有了对象,说明JVM已经进行了第一次新生代GC
第二次,S0区中存在对象
多次GC