eclipse運行報java.lang.OutOfMemoryError: PermGen space解決方法
解決這個問題之前,我們先來了解一下什麽是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解決方法