• java.lang.OutOfMemoryError: PermGen space


    异常描述:运行项目期间不定时出现此异常

    具体异常信息:

    严重: Unexpected death of background thread ContainerBackgroundProcessor[StandardEngine[Catalina]]
    java.lang.OutOfMemoryError: PermGen space
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at freemarker.template.Template.<init>(Template.java:166)
        at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:447)
        at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:360)
        at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:235)
        at freemarker.template.Configuration.getTemplate(Configuration.java:578)
        at freemarker.template.Configuration.getTemplate(Configuration.java:543)
        at org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler.init(DefaultDispatcherErrorHandler.java:48)
        at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:488)
        at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
        at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
        at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4854)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5542)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardContext.reload(StandardContext.java:4033)
        at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425)
        at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1546)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1524)
        at java.lang.Thread.run(Thread.java:745)

    Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at freemarker.template.Template.<init>(Template.java:166)
        at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:447)
        at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:360)
        at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:235)
        at freemarker.template.Configuration.getTemplate(Configuration.java:578)
        at freemarker.template.Configuration.getTemplate(Configuration.java:543)
        at org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler.init(DefaultDispatcherErrorHandler.java:48)
        at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:488)
        at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
        at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
        at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4854)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5542)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardContext.reload(StandardContext.java:4033)
        at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425)
        at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1546)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1524)
        at java.lang.Thread.run(Thread.java:745)

    解决方法:

    参考网址:http://www.cnblogs.com/hongten/archive/2012/11/16/java_PermGen_space.html

    1.按照参考网址中的方法1,结果:失败;

    2.按照参考网址的方法2,结果:失败;

    按照参考网址的方法2重设eclipse.ini文件,如下图:

    ——异常依旧(修改后似乎eclipse运行时间长一些)

    现在此对Tomcat的catalina.bat进行修改:

    1.先还原catalina.sh中的缓存配置(注:因为我的项目运行环境是Windows,原来是在catalina.sh中设置缓存——设置错了,应在catalina.bat进行设置,所以现在把相应的设置给删除了,删除后如下所示,这是Tomcat的默认代码)

    2.重新设置在catalina.bat设置缓存大小:

    a.原来我的设置:

    b.重新设置:

    在注释“rem ----- Execute The Requested Command ---------------------------------------”与代码“echo Using CATALINA_BASE:   "%CATALINA_BASE%"”直接添加:

    set JAVA_OPTS=%JAVA_OPTS% -Xms2048m -Xmx4096m -XX:CompileThreshold=8000 -XX:PermSize=1024m -XX:MaxPermSize=2048m -Xverify:none -da
    echo Using JAVA_OPTS:%JAVA_OPTS%

    添加后如下图所示:

  • 相关阅读:
    字符串类题
    计算器(栈、字符串)
    排序与检索,UVa 10474,(大理石在哪里)
    2019第十届蓝桥杯Java题
    暴力求解法
    图的遍历
    栈 队列与优先队列
    刷题小知识总结点
    字符串题单
    string
  • 原文地址:https://www.cnblogs.com/wql025/p/4865673.html
Copyright © 2020-2023  润新知