今天再搞一些OutOfMemery的相关知识探索,我想在JVM遇到OOM错误的时候,能够打印出heap dump,以便事后用Eclipse Memory Analyzer Tool(MAT)等内存分析工具分析内存的占用情况。我使用了JDK1.6.0_37和JDK1.7.0_60版本进行试验,到网上找了下,知道-XX:+HeapDumpOnOutOfMemoryError可以让JVM在探测到内存OOM的时候打印dump。但是在JVM启动参数添加这个参数的时候,JVM启动失败:
Unrecognized VM option '+HeapDumpOnOutOfMemeryError'
到网上找了下,没有找到自己满意的结果,大多数是说JDK版本不对,其实版本是对的。 -XX:HeapDumpPath这个参数可以设置dump文件的存放位置。将JVM启动参数设置成如下格式:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:/
问题解决了,当JVM发生内存溢出的时候,会在C:/下打印出heap dump。这里感觉jdk提示的错误真恶心,完全看不出错误是因为没有添加-XX:HeapDumpPath
解决JVM启动报错:Unrecognized VM option '+HeapDumpOnOutOfMemeryError'
时间: 2024-10-03 12:08:11