posts - 42,comments - 83,trackbacks - 0

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

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

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

          FeedBack:
          # re: PermGen OOM的問題[未登錄]
          2009-04-14 15:56 | john
          有時候在運行時調用字節碼生成器也可能會引發此類異常,比如cglib  回復  更多評論
            
          主站蜘蛛池模板: 南丹县| 乌兰察布市| 兴文县| 邹平县| 东阿县| 吉木萨尔县| 澎湖县| 忻州市| 越西县| 来宾市| 彭州市| 新晃| 四子王旗| 仙居县| 柳林县| 丰镇市| 新疆| 彭山县| 清新县| 安阳市| 周宁县| 石首市| 滨州市| 扶余县| 乐业县| 铁力市| 裕民县| 上高县| 绥江县| 赫章县| 乾安县| 瓮安县| 军事| 新龙县| 柳河县| 新泰市| 济源市| 谢通门县| 新平| 卓资县| 历史|