解决Java项目内存溢出:Java.lang.OutOfMemoryError:PermGen space

Java.lang.OutOfMemoryError:PermGen space 执行项目的时候出现这个错误,是说出现了非堆内存溢出。PermGen space ,全称是Permanent Generation space,是指内存的永久保存区域, 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误;

解决办法:

1.IDEA中用maven插件启动的项目:

VM-options增加:-server -XX:PermSize=512M -XX:MaxPermSize=1024m

(1. 改变项目的VM options

解决Java项目内存溢出:Java.lang.OutOfMemoryError:PermGen space

2. Tomcat启动的Maven项目,在Tomcat配置中修改VM options,

Run-Edit Configuration-Tomcat Server-要修改的tomcat-Runner-Vm options增加:

-server -XX:PermSize=512M -XX:MaxPermSize=1024m

解决Java项目内存溢出:Java.lang.OutOfMemoryError:PermGen space

JVM内各参数意义:


3.直接修改Tomcat本地配置文件:

①bin目录下的 catalina.bat 添加一行在行set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%"下面:

set  "JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128m -XX:MaxPermSize=512m"

解决Java项目内存溢出:Java.lang.OutOfMemoryError:PermGen space

②bin目录下的 catalina.sh 首行添加

JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" 

解决Java项目内存溢出:Java.lang.OutOfMemoryError:PermGen space

参考博文:JVM内存配置及配置参数详解---http://blog.csdn.net/bamboo_cqh/article/details/67635163

推荐一本书,个人感觉写Java代码进阶必读:深入理解Java虚拟机:JVM高级特性与最佳实践].周志明,电子版下载地址:

http://download.csdn.net/download/ydk888888/9928145,与君共勉;