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

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

          posted on 2008-04-11 23:45 一農(nóng) 閱讀(16250) 評(píng)論(9)  編輯  收藏

          評(píng)論

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

          連說(shuō)帶評(píng)寫(xiě)的不清晰,總結(jié)一下
          1、修改tomcat的啟動(dòng)參數(shù),類(lèi)似如下的樣子
          set JAVA_OPTS=-server -Xms256m -Xmx256m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=256m
          2、將通用的lib文件放到tomcat的目錄下  回復(fù)  更多評(píng)論   

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

          不錯(cuò),挺有用的  回復(fù)  更多評(píng)論   

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

          主要是spring和hibernate這些框架使用cglib動(dòng)態(tài)生成代理類(lèi),動(dòng)態(tài)加載類(lèi)描述信息,導(dǎo)致如果perm區(qū)設(shè)置過(guò)小的情況下,會(huì)出現(xiàn)outofmemoryerror的情況。
          但是也沒(méi)有必要把perm區(qū)設(shè)置過(guò)大,可以在生產(chǎn)環(huán)境使用jstat命令觀察perm區(qū)的情況,從來(lái)設(shè)定它的大小。  回復(fù)  更多評(píng)論   

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

          @stone2083
          恩,我之前還不知道可以使用jstat進(jìn)行觀察,剛才找了下資料。多謝。  回復(fù)  更多評(píng)論   

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

          tomcat5.x本來(lái)就有問(wèn)題,還是6好  回復(fù)  更多評(píng)論   

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

          @saysoc
          我倒沒(méi)再測(cè)試5,我現(xiàn)在都是在6下測(cè)的。  回復(fù)  更多評(píng)論   

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

          我覺(jué)得樓主解決此問(wèn)題就是把MaxPermSize調(diào)大+將lib放入tomcat的lib下。原因是不是Spring、Hibernate照成的,不敢茍同。如果樓主認(rèn)定是Spring、Hibernate照成的,最好能拿出一些有說(shuō)服力的東西show一下。  回復(fù)  更多評(píng)論   

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

          @lizhiyang

          我只是根據(jù)項(xiàng)目中多了spring,hibernate后,容易造成這個(gè)問(wèn)題,以及spring,hibernate會(huì)產(chǎn)生很多類(lèi)這個(gè)角度來(lái)猜測(cè)是其原因,倒確實(shí)沒(méi)有正式確認(rèn)過(guò)。  回復(fù)  更多評(píng)論   

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

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


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          公告

          南京 java輔導(dǎo)班 約等于免費(fèi) 詳見(jiàn)yuqiaotech.com

          導(dǎo)航

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

          統(tǒng)計(jì)

          常用鏈接

          留言簿(10)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          相冊(cè)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 辛集市| 万安县| 永修县| 武宁县| 珲春市| 昭觉县| 普安县| 阿克陶县| 平陆县| 卢龙县| 通江县| 万州区| 罗源县| 上高县| 内丘县| 云安县| 图木舒克市| 山阴县| 西平县| 深水埗区| 邓州市| 阳曲县| 新密市| 玛纳斯县| 安达市| 景泰县| 常州市| 湘乡市| 贞丰县| 庆阳市| 大连市| 镇江市| 宿迁市| 开化县| 三门县| 牡丹江市| 台东县| 勐海县| 闽清县| 海林市| 大石桥市|