我有應用程序的設置:-Xmx2048M,-Xms2048M,-XX:MaxPermSize = 256M。
有時我在日誌中得到了很多信息:OutOfMemoryError和卸載類sun.reflect.GeneratedMethodAccessor
[Unloading class sun.reflect.GeneratedMethodAccessor9]
[Unloading class sun.reflect.GeneratedMethodAccessor129]
[Unloading class sun.reflect.GeneratedMethodAccessor12]
[Unloading class sun.reflect.GeneratedMethodAccessor11]
[Unloading class sun.reflect.GeneratedMethodAccessor12]
[Unloading class sun.reflect.GeneratedMethodAccessor11]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor29]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor25]
,並得到錯誤:
的OutOfMemoryError:Java堆空間
看完這篇文章:
http://anshuiitk.blogspot.com/2010/11/excessive-full-garbage-collection.html
我知道,類在Perm Gen中加載並且應該發生錯誤:
OutOfMemoryErro r:PermGen空間。
我的問題,爲什麼我有錯誤OutOfMemoryError:Java堆空間而不是
OutOfMemoryError:PermGen空間?
感謝您的回覆。但是這個消息[卸載類sun.reflect.GeneratedMethodAccessor9]指出了Perm Gen中的問題,以及爲什麼我沒有得到OutOfMemoryError:PermGen空間,或者可能是第一個OutOfMemoryError:PermGen,然後是下一個OutOfMemoryError:Java堆空間? – luk4443 2012-02-08 14:37:02
該消息表明PermGen已被清理。沒有比這更多。您將在「OOME Java堆空間」之前始終獲得完整的GC,並且將清理包括perm gen在內的所有區域(即使在那裏有足夠的空間) – 2012-02-08 15:11:33
到目前爲止,我認爲這個OutOfMemoryError是由軟引用觸發的GC無法正常清潔時。但看來,OOME還有另一個原因? – luk4443 2012-02-08 17:34:09