1.找到idea的插件搜索(preferences----plugins),然后输入visualvm
2.完成visualVM Launcher的配置
3.给visualVM安装Visual GC插件
首先打开visualVM,可以在idea中如下图直接打开
也可以在命令行输入jvisualvm 后回车打开,点击工具-插件
找到visual GC点击安装
如果遇到了网络问题,可以直接复制弹窗中的地址直接在浏览器中下载
然后在已下载中添加下载的文件,并进行安装
最后可以看到visual GC已经安装成功了
通过visual GC可以查看对应的Eden、suvivor、older区内的变化情况。
通过简单的一段代码来模拟下OOM的时候各个区的变化
public class TestOOM {
static class BigObject {
// 1M
public byte[] space = new byte[1024 * 1024];
}
public static void main(String[] args) throws Exception {
List<Object> list = new ArrayList<>();
for (int i = 0; i < 200; i ) {
list.add(new BigObject());
Thread.sleep(100);
}
}
}
启动时设置下最大堆内存为100m,便于观察结果
程序在运行一段时间后就OOM了
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at com.donny.ni.web.memory.TestOOM$BigObject.<init>(TestOOM.java:9)
at com.donny.ni.web.memory.TestOOM.main(TestOOM.java:16)
老年代都来不及垃圾回收就已经爆了~
内存溢出后我们一般都会生成dump文件,这个时候我们可以通过VisualVM来打开dump文件进行分析,点击文件选择装入即可。
,