http://blog.csdn.net/yeahwell/article/details/8631708
————————————————————————————————————————————————
异常: 项目中遇到了系统停止响应的问题,查看日志发现Tomcat报告Caused by: 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错误,这种错误常见在web服务器对JSP进行pre
compile的时候。如果你的WEB APP下都用了大
量的第三方jar,
其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
以下是网上的各种说法:
解决方法: 手动设置MaxPermSize大小
设置参数 -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
Tomcat中,修改TOMCAT_HOME/bin/catalina.sh(linux系统下start.sh会调用它来启动tomcat,windows下调用catalina.bat,修改类似)
在文件头部注释后加入
JAVA_OPTS=‘-Xms256m
-Xmx512m -XX:MaxNewSize=256m
-XX:MaxPermSize=256m‘
如果tomcat运行多个系统,将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少
jar
文档重复占用内存的目的。
Caused by: java.lang.OutOfMemoryError: PermGen space
原文:http://www.cnblogs.com/cuizhf/p/3526997.html