我試圖診斷Sun One 9.1應用程序服務器中的PermGen內存泄漏問題。爲了做到這一點,我需要獲得JVM進程的堆轉儲。不幸的是,JVM進程是在Windows上運行的1.5版本。顯然,觸發堆轉儲的方式都不支持該設置。在內存不足或關閉時,我可以讓JVM執行堆轉儲,但是我需要能夠在任意時間獲得堆轉儲。觸發在Windows上運行的1.5 JVM的堆轉儲
經常提到的兩種獲取堆轉儲的方法是使用jmap或使用HotSpotDiagnostic MBean。這些都不支持Windows上的jvm 1.5。
有沒有我錯過的方法?如果有方法以編程方式觸發堆轉儲(不使用HotSpotDiagnostic MBean),那也可以...
如果在Windows中真的無法做到這一點,我想我必須訴諸構建一個Linux VM並在那裏進行調試。
謝謝。
我已經訴諸使用-XX:+ HeapDumpOnOutOfMemoryError以及一個試圖分配非常大的數組的jsp頁面。當我需要內存轉儲時,我可以打到jsp頁面。工作得不錯。 – jthg 2010-06-29 19:58:14