<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法

    永久空間內存不足 java.lang.OutOfMemoryError: PermGen space,相比不少使用spring,hibernate等一堆jar包的人都遇到過這個問題,在tomcat reload一個Context多次后,tomcat就掛掉了。
    http://www.wujianrong.com/archives/2006/12/javalangoutofmemoryerror_permg.html
    PermGen space這一部分用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。
    我在做TMS的發布工具的時候,就遇到了問題,這個工具的目的是把一個相同的系統,在tomcat下自動的發布多份,但當卸載,重新發布多次后, tomcat就掛了,整個電腦如同死機一般。后來使用文章里的set JAVA_OPTS=-server -Xms800m -Xmx800m -XX:PermSize=64M-XX:MaxNewSize=256m-XX:MaxPermSize=128m -Djava.awt.headless=true 解決了問題,不過在2G的電腦上,我是把-XX:MaxPermSize=128m 調到了-XX:MaxPermSize=256m。另外我還嘗試了把所有的lib都放到tomcat的lib下,一些lib就不能在本項目中再出現了。
    現在看,還是spring,hibernate之類的產生的類導致PermGen space空間不足造成的這些問題。
    http://www.javaeye.com/topic/80620?page=1 這個帖子里討論了這個問題,有人做了些有益的分析可以看看。
    我又繼續在我的筆記本上做了測試T42,1G內存。tomcat版本6.0.14。
    set JAVA_OPTS=-server -Xms256m -Xmx256m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true
    這個配置反復發布是可以的,另外又一次測試了將項目下的jar包放到tomcat的lib下的對比。重新安裝一個lib下為空的程序是10秒,否則是30秒。

    posted on 2008-04-11 23:45 一農 閱讀(16246) 評論(9)  編輯  收藏

    評論

    # re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 2008-04-12 14:25 一農

    連說帶評寫的不清晰,總結一下
    1、修改tomcat的啟動參數,類似如下的樣子
    set JAVA_OPTS=-server -Xms256m -Xmx256m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=256m
    2、將通用的lib文件放到tomcat的目錄下  回復  更多評論   

    # re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 2008-04-12 15:11 千里冰封

    不錯,挺有用的  回復  更多評論   

    # re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 2008-04-12 20:57 stone2083

    主要是spring和hibernate這些框架使用cglib動態生成代理類,動態加載類描述信息,導致如果perm區設置過小的情況下,會出現outofmemoryerror的情況。
    但是也沒有必要把perm區設置過大,可以在生產環境使用jstat命令觀察perm區的情況,從來設定它的大小。  回復  更多評論   

    # re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 2008-04-12 23:03 一農

    @stone2083
    恩,我之前還不知道可以使用jstat進行觀察,剛才找了下資料。多謝。  回復  更多評論   

    # re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 2008-04-12 23:04 saysoc

    tomcat5.x本來就有問題,還是6好  回復  更多評論   

    # re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 2008-04-12 23:19 一農

    @saysoc
    我倒沒再測試5,我現在都是在6下測的。  回復  更多評論   

    # re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 2008-04-14 14:23 lizhiyang

    我覺得樓主解決此問題就是把MaxPermSize調大+將lib放入tomcat的lib下。原因是不是Spring、Hibernate照成的,不敢茍同。如果樓主認定是Spring、Hibernate照成的,最好能拿出一些有說服力的東西show一下。  回復  更多評論   

    # re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 2008-04-18 23:02 一農

    @lizhiyang

    我只是根據項目中多了spring,hibernate后,容易造成這個問題,以及spring,hibernate會產生很多類這個角度來猜測是其原因,倒確實沒有正式確認過。  回復  更多評論   

    # re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 2008-07-01 17:30 ooyy

    一直覺得reload 比較雞肋, reload 整個context的時間跟我重啟時間都差不多了,還要reload干嘛?
    相比之下relaod class更有意義, 比如jdk的debug時,就能夠做到。  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    公告

    南京 java輔導班 約等于免費 詳見yuqiaotech.com

    導航

    <2008年4月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    統計

    常用鏈接

    留言簿(10)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品一卡2卡3卡三卡四卡| 亚洲愉拍99热成人精品热久久| 精品亚洲A∨无码一区二区三区| 人妻18毛片a级毛片免费看| 国产一区二区三区免费视频 | 免费一级毛片在级播放| 亚洲日本va一区二区三区| 天天干在线免费视频| 亚洲国产高清国产拍精品| 国产精品免费综合一区视频| 日韩精品亚洲专区在线影视| 亚洲а∨天堂久久精品| 亚洲免费在线观看| 久久亚洲免费视频| 国产男女爽爽爽爽爽免费视频| 亚洲91精品麻豆国产系列在线| 无码人妻精品一二三区免费| 亚洲AV无码片一区二区三区| 国产亚洲?V无码?V男人的天堂| 日本一区午夜艳熟免费| 亚洲精品熟女国产| 精品国产免费观看久久久 | 亚洲日韩AV无码一区二区三区人| 国产精品色午夜免费视频| 一级中文字幕乱码免费| 久久青青草原亚洲AV无码麻豆 | 免费国产在线观看| 国产一级黄片儿免费看| 亚洲精品日韩中文字幕久久久| 一个人在线观看视频免费 | 久久免费公开视频| 亚洲 欧洲 自拍 另类 校园| 亚洲国产综合久久天堂| 午夜精品射精入后重之免费观看| 亚洲精品二三区伊人久久| 亚洲?v女人的天堂在线观看| 无码囯产精品一区二区免费| 亚洲色大成网站www久久九| 伊伊人成亚洲综合人网7777| 男女超爽刺激视频免费播放| 一本岛v免费不卡一二三区|