解决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
2. Tomcat启动的Maven项目,在Tomcat配置中修改VM options,
Run-Edit Configuration-Tomcat Server-要修改的tomcat-Runner-Vm options增加:
-server -XX:PermSize=512M -XX:MaxPermSize=1024m
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"
②bin目录下的 catalina.sh 首行添加
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
参考博文:JVM内存配置及配置参数详解---http://blog.****.net/bamboo_cqh/article/details/67635163
推荐一本书,个人感觉写Java代码进阶必读:深入理解Java虚拟机:JVM高级特性与最佳实践].周志明,电子版下载地址: