1. 程式人生 > >eclipse執行報java.lang.OutOfMemoryError: PermGen space解決方法

eclipse執行報java.lang.OutOfMemoryError: PermGen space解決方法

一、在window下eclipse裡面Server掛的是tomcat6,一開始還是以為,tomcat配置的問題,後面發現,配置了tomcat裡面的catalina.bat檔案,加入  set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=108m -XX:MaxPermSize=512m  ,eclipse跑起來還是報java.lang.OutOfMemoryError: PermGen space。  後面在網上找了資料,要在eclipse裡面配置才可以。  點選“Run” – “Run Configurations…”,選中Tomcat Server,進入Arguments分頁,在VM arguments中加入提升初始分配空間的引數 

第一步: 

這裡寫圖片描述

第二步:加入引數  -Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=256M 

這裡寫圖片描述

1、PermGen space簡介

PermGen space的全稱是Permanent Generation space,是指記憶體的永久儲存區域OutOfMemoryError: PermGen space從表面上看就是記憶體益出,解決方法也一定是加大記憶體。

說說為什麼會記憶體益出:  (1)這一部分用於存放Class和Meta的資訊,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同。  (2) GC(Garbage Collection)不會在主程式執行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web伺服器對JSP進行pre compile的時候。

如果你的WEB APP下都用了大量的第三方jar,其大小超過了jvm預設的大小(4M)那麼就會產生此錯誤資訊了。  建議:將相同的第三方jar檔案移置到tomcat/shared/lib目錄下,這樣可以減少jar 文件重複佔用記憶體

二、在linux下部署的時候要修改catalina.sh  JAVA_OPTS=”$JAVA_OPTS -server -Xms1536m -Xmx1536m -XX:PermSize=256m -XX:MaxPermSize=512m”