posts - 42,comments - 83,trackbacks - 0

                  某些時(shí)候,Application Server運(yùn)行一段時(shí)間后,會(huì)出現(xiàn)PermGen OOM的現(xiàn)象。所謂PermGen,它是Sun/HP JDK中獨(dú)有的,用于保存class原數(shù)據(jù)信息的地方,class被load后,數(shù)據(jù)信息會(huì)被放入perm中,而不是OldGen或YoungGen。一般情況下,fullGC會(huì)觸發(fā)perm的GC,即輔助清理那些沒必要的類,以便降低perm的開銷,而由于jdk的自身原因,fullGC不觸發(fā)permGC的情況也是存在的,如何保證perm中的無用類信息會(huì)被清除呢,可以試試下面的幾個(gè)參數(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)用自身需要。對于泄漏(比如動(dòng)態(tài)生成的類太多,用完之后不再使用,我們需要優(yōu)化應(yīng)用、框架,看看是否可以避免這些問題),如果應(yīng)用自身對于perm的需求就比較大(比如應(yīng)用包很大,類很多),那么上面的參數(shù)一般是無法幫助我們降低perm開銷,這時(shí)候,我們能做的就是逐漸加大perm size, 直到一個(gè)能讓系統(tǒng)穩(wěn)定的值。

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

          FeedBack:
          # re: PermGen OOM的問題[未登錄]
          2009-04-14 15:56 | john
          有時(shí)候在運(yùn)行時(shí)調(diào)用字節(jié)碼生成器也可能會(huì)引發(fā)此類異常,比如cglib  回復(fù)  更多評論
            
          主站蜘蛛池模板: 时尚| 攀枝花市| 娄烦县| 晋江市| 平湖市| 重庆市| 垫江县| 桐城市| 鹤壁市| 隆林| 开原市| 台东市| 七台河市| 甘孜县| 赫章县| 拉萨市| 香格里拉县| 电白县| 南平市| 东乡| 定结县| 泰安市| 奈曼旗| 南郑县| 平邑县| 伊通| 华宁县| 兰坪| 伊川县| 廊坊市| 尉犁县| 肇州县| 远安县| 二连浩特市| 宁明县| 贺兰县| 裕民县| 额敏县| 格尔木市| 马边| 息烽县|