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 走走停停又三年 閱讀(1356) 評論(1)  編輯  收藏 所屬分類: Java Technology

          FeedBack:
          # re: PermGen OOM的問題[未登錄]
          2009-04-14 15:56 | john
          有時候在運行時調用字節碼生成器也可能會引發此類異常,比如cglib  回復  更多評論
            
          主站蜘蛛池模板: 加查县| 平塘县| 故城县| 蓝田县| 井冈山市| 田东县| 玉溪市| 慈利县| 黔西县| 南部县| 湖北省| 海兴县| 英吉沙县| 剑阁县| 定远县| 洱源县| 平度市| 米泉市| 缙云县| 商洛市| 石楼县| 高陵县| 霍林郭勒市| 车致| 洪江市| 互助| 南乐县| 八宿县| 阿克陶县| 正镶白旗| 宜阳县| 正阳县| 云梦县| 衡东县| 博罗县| 栾川县| 巴彦县| 融水| 松潘县| 宜章县| 建平县|