我在Sun JVM(1.6.0_21-b06)上收到PermGen空間錯誤(確定,它是Oracle :))。選項-XX:MaxPermGen值的增加沒有幫助。我知道PermGen是一個用於類元數據等永久對象的空間。項目中的課程數量不是很大〜10 000.在崩潰之前,jvisualvm顯示57MB爲使用PermGen。導致java.lang.OutOfMemoryError的算法:PermGen空間錯誤
我想有些算法佔用所有可訪問的內存。有人知道導致PermGen溢出的算法的例子嗎?
UPD。我問這樣一個抽象問題,因爲在那個時候我不能使用任何分析器 - 代碼崩潰如此困難以至於jvisualvm和eclipse停止響應。我需要殺死終端與kill -KILL {process_numer}的java進程。我使用有很多線程和JMS消息傳遞的糟糕的有組織(但商業)代碼。調試是一團糟 - 我首先需要一些想法在哪裏看。
你quesion的抽象級別殺死;)。使用Java分析器(例如virtualvm)來找出程序崩潰的原因。如果您發現問題,請重寫您的問題。 – Skarab 2010-10-04 13:59:17
只是出於好奇,你能顯示你使用的確切的命令行選項嗎? – karoberts 2010-10-04 14:04:45
通過了解導致PermGen溢出的代碼示例,您會達到什麼目的?你是否試圖欣賞一個問題,然後從敬仰中產生問題,或者你是否試圖修復它?我已經看到這個問題解決方法失敗了很多次,最好找到根本原因並解決它。像Skarab建議使用Java分析器。明白如果你是一個研究人員或學生,但看起來不像。 – sjt 2010-10-04 14:25:26