定位内存溢出错误

定位内存溢出错误_第1张图片

  1. 添加虚拟机参数
    -XX:+HeapDumpOnOutOfMemoryError(内存溢出则会自动生成"溢出分析文件",如图1)
    定位内存溢出错误_第2张图片
    图1
    -Xmx512m(为了快速模拟内存溢出,暂设堆空间为512m)

  2. 编写发生内存溢出代码

public class MemoryOutputError {
    public static void main(String[] args) {
    
        ArrayList<Object> list = new ArrayList<>();
        
        while (true) {
            list.add(new Object());
        }
        
    }
}
  1. 使用MAT工具分析生成的内存溢出分析文件(如图2)
    下载地址:https://eclipse.dev/mat/downloads.php
    定位内存溢出错误_第3张图片
    图2
  • 点击溢出查看(如图3)
    定位内存溢出错误_第4张图片
    图3
  • 溢出定位,com.lidantao.MemoryOutputError.main([Ljava/lang/String;)V (MemoryOutputError.java:15)【发生在MemoryOutputError的main函数的第15行】
    定位内存溢出错误_第5张图片
    定位内存溢出错误_第6张图片

你可能感兴趣的:(Java面试题,java)