java.lang.OutOfMemoryError: PermGen space有效解決方法

PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域OutOfMemoryError: PermGen space從表面上看就是內存益出,解決方法也一定是加大內存。說說爲什麼會內存益出:這一部分用於存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web服務器對JSP進行pre compile的時候。

 

解決方法

   一、手動設置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.bat(windows系統)或者catalina.sh(unix系統)

  1.windows系統  在 TOMCAT_HOME/bin/catalina.bat 文件 echo Using CATALINA_BASE:   "%CATALINA_BASE%"上面加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

  2.unix系統 在 catalina.sh 文件 echo "Using CATALINA_BASE:   $CATALINA_BASE"上面或者第一行加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

   或者加入 JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

   

  二、如果啓動Tomcat的時候是通過MyEclipse啓動服務器的話,需要在MyEclipse裏面同樣設置內存大小

  原圖上的文字:-Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M  

  

 

  -Xms64m   -Xmx256m

  

  

 

1、修改eclipse.ini 
在Myeclipse安裝目錄下G:\MyEclipse8.5\Genuitec\MyEclipse 8.5有一個myeclipse.ini配置文件,設置如下: 
-vmargs
-Xmx512m
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=64m

2、設置Default VM Arguments 
在myEclipse中,打開Windows-> Preferences->Java->Installed JREs->點擊正在使用的JDK->Edit->Default VM Arguments文本框中輸入:-Xms64m   -Xmx256m 

3、如果是web工程還報內存溢出,可能就要設置tomcat內存。

(1)tomcat的安裝根目錄%tomcat%bin/catalina.bat文件,SET JAVA_OPTS 一行;

(2)myeclipse配置web服務器配置 Window—Preferences—Myeclipse—Servers—tomcat 5.x—JDK的Optional Java VM arguments配置爲:

-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

 

4、如果是debug模式運行,需要調整debug的虛擬機參數,因爲debug模式的默認內存分配時很少的。  

選擇Arguments 在 VM arguments裏面填寫內存值如:-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

 

 

 

一般的ini文件設置主要包括以下幾項:

-vmargs

-Xms40m

-Xmx256m

-XX:PermSize=64M

-XX:MaxPermSize=128M

以下解釋其意思。

-vmargs:說明後面是VM的參數

-Xms40m:虛擬機佔用系統的最小內存

-Xmx256m:虛擬機佔用系統的最大內存

-XX:PermSize:最小堆大小。一般報內存不足時,都是說這個太小,

                       堆空間剩餘小於5%就會警告,建議把這個稍微設

                               大一點,不過要視自己機器內存大小來設置

-XX:MaxPermSize:最大堆大小。這個也適當大些

     所以若出現問題,首先請調整 -Xms40m:將其設置的小一些,就ok了,1g內存推薦設置爲:

-vmargs

-Xms128M

-Xmx512M

-XX:PermSize=256M

-XX:MaxPermSize=512M

其中-XX:PermSize=64M可以設置大一些,但不能超過MaxPermSize

-Xmx512M的5%爲25.6M,理論上要求-Xmx的數值與-XX:MaxPermSize必須大於25.6M

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章