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

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

load 這一 容量 最小 ips 註意 可能 設置 超過

解決這個問題之前,我們先來了解一下什麽是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 文檔重復占用內存

第一步:雙擊tomcat服務器->Overview->Open lauch configuration -->Arguments

技術分享圖片

也可以通過下面的方式打開上面的界面:

點擊“Run” – “Run Configurations…”,選中Tomcat Server,進入Arguments分頁

技術分享圖片

技術分享圖片

第二步:修改VM arguments 配置,加入提升初始分配空間的參數

-Xms256m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256M 

技術分享圖片

參數的解釋

-Xms256m : 表示虛擬機占用系統的最小內存為256M。

-Xmx1024m :表示虛擬機占用系統的最大內存為1024M.

-XX:PermSize:最小堆大小。一般報內存不足時,都是說這個太小,堆空間剩余容量小於5%就會警告,建議把這個稍微設大一點,視自己機器內存大小來設置

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

補充知識點

Linux下如何修改JVM內存大小

要添加在tomcat 的bin 下catalina.sh 裏,位置cygwin=false前 。註意引號要帶上,紅色的為新添加的.

# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false

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