1. 程式人生 > >解決JVM啟動報錯:Unrecognized VM option '+HeapDumpOnOutOfMemeryError'

解決JVM啟動報錯:Unrecognized VM option '+HeapDumpOnOutOfMemeryError'

今天再搞一些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