2011-10-04 53 views
0

在我的Java應用程序中,當我從腳本的OutputStream中讀取時會生成堆轉儲文件。我確信我的應用程序中有內存泄漏。但即使生成了堆轉儲後,導致內存泄漏的線程也不會出現。我沒有在run方法中捕獲Throwable,Exception,Error等。當它生成時會生成堆轉儲

我想知道什麼時候可以拿到生成的堆轉儲文件時我沒有指定任何特殊VM參數一樣

-XX:+HeapDumpOnOutOfMemoryError 

回答

2

據我所知,heapdumps纔會自動生成如果指定的選項,在Oracle的至少JVM(不知道其他人,但我懷疑他們自動執行)。

在大多數情況下,您必須手動觸發堆轉儲生成。

也有以編程方式創建堆轉儲的方法,但這些方法都是特定於JVM的,並取決於程序員如何以及何時調用它們。如果使用這個選項,那麼你必須尋找它,因爲它可能在任何地方。