牛骨文教育服务平台(让学习变的简单)

剖析OutOfMemoryError: PermGen sp

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。OutOfMemoryError: PermGen ; 这一区域用于存放Class和Meta的信息。

产生原因:

Class在被加载的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果应用会加载很多class的话,就很可能出现PermGen space错误。

这种错误常见在web服务器对JSP进行pre compile的时候。

解决方法:就是加大将PermGen space区域的内存,也就是把MaxPermSize的大小调大如下:
-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m;

如果是tomcat报这个错:

    在# OS specific support. $var _must_ be set to either true or false.上面加入以下行:
    JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128M";