posts - 42,comments - 83,trackbacks - 0

                  某些時候,Application Server運行一段時間后,會出現(xiàn)PermGen OOM的現(xiàn)象。所謂PermGen,它是Sun/HP JDK中獨有的,用于保存class原數(shù)據(jù)信息的地方,class被load后,數(shù)據(jù)信息會被放入perm中,而不是OldGen或YoungGen。一般情況下,fullGC會觸發(fā)perm的GC,即輔助清理那些沒必要的類,以便降低perm的開銷,而由于jdk的自身原因,fullGC不觸發(fā)permGC的情況也是存在的,如何保證perm中的無用類信息會被清除呢,可以試試下面的幾個參數(shù)(紅色標(biāo)注),

          -Xms384M -Xmx384M -XX:NewSize=64M -XX:MaxNewSize=64M -XX:PermSize=64m -XX:MaxPermSize=64m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled  -XX:+CMSPermGenSweepingEnabled -XX:+CMSPermGenPrecleaningEnabled -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+TraceClassLoading -XX:+TraceClassUnloading

                  對于PermGen的開銷,我們通常需要定位這些開銷是泄漏還是應(yīng)用自身需要。對于泄漏(比如動態(tài)生成的類太多,用完之后不再使用,我們需要優(yōu)化應(yīng)用、框架,看看是否可以避免這些問題),如果應(yīng)用自身對于perm的需求就比較大(比如應(yīng)用包很大,類很多),那么上面的參數(shù)一般是無法幫助我們降低perm開銷,這時候,我們能做的就是逐漸加大perm size, 直到一個能讓系統(tǒng)穩(wěn)定的值。

          posted on 2009-04-14 10:46 走走停停又三年 閱讀(1356) 評論(1)  編輯  收藏 所屬分類: Java Technology

          FeedBack:
          # re: PermGen OOM的問題[未登錄]
          2009-04-14 15:56 | john
          有時候在運行時調(diào)用字節(jié)碼生成器也可能會引發(fā)此類異常,比如cglib  回復(fù)  更多評論
            
          主站蜘蛛池模板: 开原市| 绥化市| 铜梁县| 鲜城| 特克斯县| 文登市| 佛教| 黄浦区| 新竹市| 九江县| 长阳| 临潭县| 神木县| 华容县| 进贤县| 安国市| 沙湾县| 千阳县| 东平县| 五原县| 嵩明县| 光泽县| 和硕县| 信宜市| 伊通| 巴东县| 吉木萨尔县| 四会市| 拜泉县| 金门县| 神木县| 车险| 兴化市| 章丘市| 永定县| 武汉市| 石首市| 嘉义市| 镇安县| 南木林县| 延川县|