我使用以下參數(其中包括)-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=../logs
開始我的java代碼(Vista中的1.6.0_16)。我運行代碼,我可以在日誌中看到有兩個OOM。-XX:+ HeapDumpOnOutOfMemoryError不在OOM中創建hprof文件
第一個我知道,因爲我可以在該HPROF文件被創建的標準輸出看到:
java.lang.OutOfMemoryError: Java heap space
Dumping heap to ../logs\java_pid4604.hprof ...
Heap dump file created [37351818 bytes in 1.635 secs]
,然後朝我的代碼得到另一個OOM結束,我抓住這一點,但我沒有創建第二個hprof文件。任何人都知道這是爲什麼?是因爲我抓住了OOM例外嗎?
以及我知道關於不要試圖從OOM中恢復的建議,但在這種情況下,我需要,必須,並且在很多情況下一切正常。 但你的hipothesys聽起來不錯,也許只有一個是故意創建的... 在研究這個問題時,我發現了一些在stackoverlfow中的問題,它展示瞭如何以編程方式創建轉儲,但現在找不到它 – Persimmonium 2009-10-05 10:45:07