我的應用程序顯示上升的'老一代'/'老化世代'的大小,當它達到'老一代'的最大限制時,突然PermGen大小增加。 下面是我這一代的浸潤劑:Java HotSpot 1.6虛擬機,垃圾收集 - 可怕PermGen
-Xmx1200m -Xms1200m -Xmn450m -XX:MaxPermSize=600m -XX:+UseParallelGC
這是在32位的Fedora所以不能有比這更大的堆。
該應用程序沒有做任何花哨的類加載,雖然它使用Spring IOC和Hibernate,但Spring App-context.xml定義了一些1000 Bean。
這個應用程序開始於175MB PermGen,在幾小時內穩定增加到〜250MB,保持這種狀態直到Tenured Generation達到〜780 MB,然後pergen跳到〜500MB,而Old Gen降到〜500MB。
這迫使我每天重新啓動應用程序,並給我真正的迫近OutOfMemory錯誤的恐慌..任何見解都會非常有幫助。
感謝 Gala101
13 /月:可能有人請扔在當「老根」進行垃圾回收時會發生什麼光?
jvm是否將來自'Old Gen'的集合放入PermGen中?
我的PermGen spike只有在收集來自'Old Gen'時纔會出現,OldGene的大小也隨着PermGen大小的增加而降低。
PS:我不做任何實時部署/取消部署,因爲這肯定會讓PermGen吃光。
下面是我的監視頁面電流spanshot:(已提交的部分剛剛跳下〜250 MB到500 MB)
PS Perm Gen
Type Non-heap memory
Usage init = 16777216(16384K) used = 254453736(248489K) committed = 504954880(493120K) max = 629145600(614400K)
Peak Usage init = 16777216(16384K) used = 254453736(248489K) committed = 504954880(493120K) max = 629145600(614400K)
Collection Usage init = 16777216(16384K) used = 252421536(246505K) committed = 504954880(493120K) max = 629145600(614400K)
據我所知MaxPermSize參數不能超過256MB更多... – 2010-05-11 10:12:42
@Bozhidar:不是真的,PermGen的大小可以比 – skaffman 2010-05-11 10:13:24