Eclipse+Maven环境下java.lang.OutOfMemoryError: PermGen space及其解决方法

时间:2022-01-26 20:26:28

转自  https://blog.csdn.net/qdgengwenfei/article/details/71455432

java.lang.OutOfMemoryError: PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域.内存中的这个区域是用来存放class和meta信息的,Class在被jvm load的时候,class信息会被放入该区域.它不同于存放实例的Heap区域,GC不会在主程序运行期间对PermGen space进行清理.

上网查的加大PermGen space即可.在tomcat的catalina.bat的JAVA_OPTS 变量前设置JAVA_OPTS=" -XX:PermSize=97m -XX:MaxPermSize=256m″

然而这种方法没有解决问题,后来看到一篇文章给解决了

解决办法:
设置run as --->run configuragtions--->jre标签下的属性VM arguments:
-server -Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled
 -XX:+PrintGCDetails -Xloggc:%M2_HOME%/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%M2_HOME%/java_pid.hprof 
其中参数说明如下:
-XX:+CMSPermGenSweepingEnabled : 允许permgenspace的垃圾回收
-XX:+CMSClassUnloadingEnabled : allows the garbage collector to remove even classes from the memory
-XX:PermSize=256M -XX:MaxPermSize=256M : raises the amount of memory allocated to the permgenspace