• 遇到java.lang.OutOfMemoryError: Java heap space问题【持续跟踪中...】


    昨天下午app服务端无缘无故又502错了,我打开tomcat 日志:

    INFO: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter DEBUG: inited with 15 rules
    Mar 17, 2016 5:50:42 PM org.apache.catalina.core.ApplicationContext log
    INFO: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter DEBUG: conf is ok
    Mar 17, 2016 5:50:42 PM org.apache.catalina.core.ApplicationContext log
    INFO: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO: loaded (conf ok)
    Mar 17, 2016 5:50:42 PM org.apache.catalina.core.StandardContext reload
    INFO: Reloading Context with name [] is completed
    Mar 17, 2016 11:04:22 PM org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor run
    SEVERE: Unexpected death of background thread ContainerBackgroundProcessor[StandardEngine[Catalina]]
    java.lang.OutOfMemoryError: Java heap space

    查看了下网上大致有一种思路:

    在tomcat/bin/catalina.sh最前面加入:set JAVA_OPTS=-Xms384m -Xmx384m

    这两个参数根据实际内存大小来设置

    我以前优化服务器的时候已经做过设置,现在看来这招是不是还能管用?

    我linux服务器上以前做过的配置

     JAVA_OPTS="-server -Xms1024m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m -XX:-UseGCOverheadLimit"

    我尝试着再调大点,观察两天看看。

    以下为修改过后

     JAVA_OPTS="-server -Xms1524m -Xmx1524m -Xss1524K -XX:PermSize=712m -XX:MaxPermSize=2048m -XX:-UseGCOverheadLimit"

     1.再回过头来看看我们的项目现在用的hibernate,我有点感觉是这里出了问题,hibernate用好了非常方便,用不好,各种问题, 我觉得是hibernate缓存bean造成

    jvm 内存不够 ,不是没这种可能

    2.使用Spring+Hibernate从数据库中读取大量数据,使用了单例模式的AppContext的getBean,内存中缓存了大量的Entity Bean

    注意:只有startup.bat启动tomcat,设置才能生效,如果利用windows的系统服务启动tomcat服务,上面的设置就不生效了, 
    就是说set JAVA_OPTS=-Xms384m -Xmx384m没起作用

  • 相关阅读:
    linux tcpdump(转)
    linux ping
    Dalvik VM和JVM 的比较
    Android应用开发基础之八:广播与服务(二)
    Android应用开发基础之七:广播与服务(一)
    Android应用开发基础之五:网络编程(二)
    Android应用开发基础之三:数据存储和界面展现(三)
    Android应用开发基础之二:数据存储和界面展现(二)
    Android应用开发基础之一:数据存储和界面展现(一)
    Android之Fragment 基本介绍(转)
  • 原文地址:https://www.cnblogs.com/fangyuan303687320/p/5291217.html
Copyright © 2020-2023  润新知