Java Tomcat报错 PermGen space错误解决方法

系统 1852 0

1.参考:

http://blog.csdn.net/fox009/article/details/5633007

http://hi.baidu.com/like_dark/blog/item/19c1948b3292b0799f2fb468.html

http://anyeeye.iteye.com/blog/444624

Tomcat6性能调优 出现java.lang.OutOfMemoryError: PermGen space

http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/

2.报错:

      Exception in thread "DispatcherThread"
      
         java.lang.OutOfMemoryError: PermGen space
Exception in thread 
      
      "ContainerBackgroundProcessor[StandardEngine[Catalina]]"
      
         java.lang.OutOfMemoryError: PermGen space
Exception in thread 
      
      "State Saver"
      
         java.lang.OutOfMemoryError: PermGen space
Exception in thread 
      
      "AWT-Windows" java.lang.OutOfMemoryError: OutOfMemoryError
    

3.原因:

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)那么就会产生此错误信息了。

4.解决方法1:

手动设置MaxPermSize大小,如果是linux系统,修改TOMCAT_HOME/bin/catalina.sh,如果是windows系统,修改TOMCAT_HOME/bin/catalina.bat,
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

5.解决方法2

修改eclipse.ini文件,修改如下:

      -
      
        vmargs

      
      -Dosgi.requiredJavaVersion=1.5
-
      
        Xms128m

      
      -
      
        Xmx512m

      
      -XX:PermSize=
      
        64M 

      
      -XX:MaxPermSize=128M
    

如果还报错,可以考虑如下修改

      -
      
        vmargs

      
      -Dosgi.requiredJavaVersion=1.5
-
      
        Xms512m

      
      -
      
        Xmx1024m

      
      -XX:PermSize=
      
        256M 

      
      -XX:MaxPermSize=512M
    

报错:

      2011-11-21 21:10:46
      
         org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
严重: The web application [
      
      /
      
        Application] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

      
      2011-11-21 21:10:46
      
         org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [
      
      /
      
        Application] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.

      
      2011-11-21 21:10:46
      
         org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [
      
      /Application] appears to have started a thread named [AWT-
      
        Windows] but has failed to stop it. This is very likely to create a memory leak.

      
      2011-11-21 21:10:46
      
         org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [
      
      /Application] appears to have started a thread named [Thread-14
      
        ] but has failed to stop it. This is very likely to create a memory leak.

      
      2011-11-21 21:10:46
      
         org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
严重: The web application [
      
      /Application] created a ThreadLocal with key of type [net.sf.json.AbstractJSON$1] (value [net.sf.json.AbstractJSON$1
      
        @3661eeb]) and a value of type [java.util.HashSet] (value [[]]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.

      
      2011-11-21 21:10:50
      
         org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring FrameworkServlet 
      
      'Dispatcher'
    

修改catalina.bat

添加

      JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 
-server -Xms1536m -
      
        Xmx1536m

      
      -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=
      
        256m 

      
      -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
    

样例

      
        #   JSSE_HOME       (Optional) May point at your Java Secure Sockets Extension
#                   (JSSE) installation, whose JAR files will be added to the
#                   system 
      
      
        class
      
      
         path used to start Tomcat.
#
#   CATALINA_PID    (Optional) Path of the file which should contains the pid
#                   of catalina startup java process, when start (fork) is used
#
# $Id: catalina.sh 
      
      609438 2008-01-06 22:14
      
        :28Z markt $
# 
      
      -----------------------------------------------------------------------------
      
        
 
JAVA_OPTS
      
      ="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m 
-Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=
      
        256m 

      
      -XX:MaxPermSize=256m -XX:+DisableExplicitGC
      
        "

      
      
         
 
# OS specific support.  $var _must_ be set to either 
      
      
        true
      
       or 
      
        false
      
      
        .
cygwin
      
      =
      
        false
      
      
        
os400
      
      =
      
        false
      
      
        
darwin
      
      =
      
        false
      
      
        case
      
       "`uname`"
      
         in
CYGWIN
      
      *) cygwin=
      
        true
      
      
        ;;
OS400
      
      *) os400=
      
        true
      
      
        ;;
Darwin
      
      *) darwin=
      
        true
      
      
        ;;
esac
 
# resolve links 
      
      - $0
      
         may be a softlink
PRG
      
      ="$0"
    

具体参数根据自己机器情况而定

      JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m 
-Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=
      
        256m 

      
      -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
    


Java Tomcat报错 PermGen space错误解决方法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论