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
摘抄自网络,便于检索查找。

浙公网安备 33010602011771号