JVM 参数 - XX:+HeapDumpOnOutOfMemoryError

-XX:+HeapDumpOnOutOfMemoryError

当堆内存空间溢出时输出堆的内存快照。

复现一下内存空间溢出

  • 创建一个 spring boot 程序。只要能够运行就可以。
  • 指定内存最大值为 10M(-Xmx10M)。10M,呵呵,肯定启动不了 spring boot ,肯定内存空间溢出。

eclipse 中配置程序启动参数:
在这里插入图片描述
eclipse 中的执行结果:
在这里插入图片描述

另一个复现内存空间溢出的方法

编写一个内存泄漏的程序,漏的足够多时,就内存空间溢出了。

class Wrapper {
  public static void main(String args[]) throws Exception {
    Map map = System.getProperties();
    Random r = new Random();
    while (true) {
      map.put(r.nextInt(), "value");
    }
  }
}

添加参数 -XX:+HeapDumpOnOutOfMemoryError

在 java 命令行中添加 vm 参数 - XX:+HeapDumpOnOutOfMemoryError。

eclipse 中配置程序启动参数:
在这里插入图片描述
eclipse 中的执行结果:
在这里插入图片描述
内存快照的生成目录,默认在 java 的启动目录下。
在这里插入图片描述

-XX:HeapDumpPath

-XX:HeapDumpPath=目录或文件

-XX:HeapDumpPath=目录时,参数表示生成 DUMP 文件的路径。默认为:java_

-XX:HeapDumpPath=文件时,形如 - XX:HeapDumpPath=d:\java_heapdump.hprof。
略。

内存快照的分析

mat

参考

https://blog.csdn.net/liuxinghao/article/details/77934725

posted @ 2024-06-27 10:24  CharyGao  阅读(64)  评论(0)    收藏  举报