Linux配置內存依舊報內存溢出--解決方案

在linux環境下,tomcat7,部署war包.啓動項目時報java.lang.OutOfMemoryError: PermGen space異常


PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,
這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中,
它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對
PermGen space進行清理。

解決方法: 設置MaxPermSize大小
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
通常我們都是直接把設置語句拷貝這個文件 tomcat-》bin-》catalina.sh

修改後啓動過程沒有報異常,但是無法訪問。參看後臺,依舊報內存溢出,但不是java.lang.OutOfMemoryError: PermGen space,而是
java.lang.OutOfMemoryError: Java heap space
這是因沒有成功配置jvm的內存。

解決方案:改變設置MaxPermSize語句的位置

要添加在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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章