首页 > 代码库 > Exception in thread "Thread-12751" java.lang.OutOfMemoryError: PermGen space

Exception in thread "Thread-12751" java.lang.OutOfMemoryError: PermGen space

转载自 :http://greemranqq.iteye.com/blog/1705867

转载自:http://www.cnblogs.com/xwdreamer/archive/2011/11/21/2296930.html


Java代码  收藏代码
  1. Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]"   
Java代码  收藏代码
  1. java.lang.OutOfMemoryError: PermGen space  
 
Java代码  收藏代码
  1. 原因:  
  2.   
  3. PermGen space的全称是Permanent Generation space,  
Java代码  收藏代码
  1. 是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,  
Java代码  收藏代码
  1. Class在被Loader时就会被放到PermGen space中,  
Java代码  收藏代码
  1. 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)  
Java代码  收藏代码
  1. 不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,  
Java代码  收藏代码
  1. 就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。  
Java代码  收藏代码
  1. 如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。  

 

 

Java代码  收藏代码
  1. 解决方法1:   
  2.   
  3. 手动设置MaxPermSize大小,如果是linux系统,修改TOMCAT_HOME/bin/catalina.sh,如果是windows系统,修改TOMCAT_HOME/bin/catalina.bat,  
  4. 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:  
  5. JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m  
 解决方法2
Java代码  收藏代码
  1. 修改eclipse.ini文件,修改如下:  
  2.   
  3.   
  4. -vmargs  
  5. -Dosgi.requiredJavaVersion=1.5  
  6. -Xms128m  
  7. -Xmx512m  
  8. -XX:PermSize=64M   
  9. -XX:MaxPermSize=128M  
  10.   
  11. 如果还报错,可以考虑如下修改  
  12.   
  13.   
  14. -vmargs  
  15. -Dosgi.requiredJavaVersion=1.5  
  16. -Xms512m  
  17. -Xmx1024m  
  18. -XX:PermSize=256M   
  19. -XX:MaxPermSize=512M 



 

Exception in thread "Thread-12751" java.lang.OutOfMemoryError: PermGen space