Visual VM 是一个JVM虚拟机可视化的工具,在JDK1.7以后自带
主要用于开发人员 排除错误,观察堆栈使用情况
它的路径在JDK的bin路径下,双击打开
打开结果如下
总结一下定位OOM,FullGC使用方法大概步骤
- 设置JVM参数,打印日志
- 获取dump文件
- 通过VisualVM分析dump文件
- 修改代码验证
下面我们来模拟一次OOM
public class OOM {
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList<>();
while (true){
list.add(new Random().nextInt());
}
}
}
内存溢出代码
-Xmx1024m
-Xms1024m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=d:\dump //设置存储文件地址
设置堆转存储的位置
(这里堆转存储的意思大概是堆满了,将未完成的结果以文件的形式存储起来)
打印的错误信息
打开Java VisualVM加载文件
可以确定到是 main 线程造成了OOM(定位线程)
点击进入,可以查看到是那段代码出现了问题(定位代码段)