1. 程式人生 > >java.lang.OutOfMemoryError: PermGen space---先測試

java.lang.OutOfMemoryError: PermGen space---先測試

重復 如果 方法 instance 占用內存 測試 server title memory

一、在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”

java.lang.OutOfMemoryError: PermGen space---先測試