【问题标题】:PermGen space Memory leakPermGen 空间内存泄漏
【发布时间】:2015-02-27 10:46:10
【问题描述】:
org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet default threw exception

java.lang.OutOfMemoryError: PermGen space

部署应用程序时出现此错误,服务器在 15 到 20 分钟后挂起。

【问题讨论】:

  • 部署或_re_deploying/重新加载上下文时?您是否尝试过增加 PermGen Space?
  • Netbeans 因重新部署时的内存泄漏而臭名昭著
  • 多次重新部署会增加永久代分配的大小。您只需要在一定数量的部署后重新启动应用程序服务器。 stackoverflow.com/questions/318942/…

标签: java postgresql struts2 tomcat6 netbeans-7


【解决方案1】:

当您发生内存泄漏时,它表明您的应用程序中存在永久代泄漏,这意味着每当您在应用程序服务器中重新部署应用程序时,都会留下大量类。这些旧的类定义最终会出现在您的 JVM 永久代中,占用宝贵的内存,因此解决方案永远不要增加 Permgen 大小,这个“解决方案”是一个定时炸弹。

与其他类型的内存泄漏一样,没有黄金工具固定的方法列表,您可以按照这些方法神奇地解决问题.可能的情况很多,解决的方法也很多。

话虽如此,我建议使用 Plumbr (official website),这里有一个非常有用的指南来解决它:: p>

Solving run-time OutOfMemoryError

祝你好运。

【讨论】:

    【解决方案2】:

    解决办法是增加tomcat服务器catalina.bat中的PermGen堆大小;这可以给你一些喘息的空间,但最终这也会在一段时间后返回java.lang.OutOfMemoryError: PermGen 空间。

    Follow these steps to increase the PermGen Heap size:
    
    1) Go to Tomcat installation directory i.e C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.14\bin in Windows.
    
    2) Add JAVA_OPTS in your catalina.bat
    
    set JAVA_OPTS="-Xms1024m -Xmx10246m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
    

    增加PermGen空间只能在tomcat中阻止java.lang.OutOfMemoryError: PermGen一段时间,它最终会根据你重新部署Web应用程序的次数而发生,最好找到导致tomcat内存泄漏的违规类并修复它.

    【讨论】:

      【解决方案3】:

      产生 PermGen 错误可能有一个非常具体的原因。 但是..

      使用(在 JAVA_OPTS 中)为 tomcat JVM 分配更多空间

      -XX:MaxPermSize=256m
      

      或者你想要的任何尺寸。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-25
        • 2017-12-03
        • 2018-07-15
        • 2014-05-13
        • 2011-01-12
        • 2014-08-16
        • 2016-01-13
        • 2021-04-17
        相关资源
        最近更新 更多