zoukankan      html  css  js  c++  java
  • 遇到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没起作用

  • 相关阅读:
    elasticsearch 不能通过9200端口访问
    elasticsearch 2.0+ 安装 Marvel
    修改es最大返回结果数
    ElasticSearch的Marvel更新license
    python-execjs(调用js)
    爬取豆瓣电影排名的代码以及思路
    docker的安装
    mysql主从同步
    Docker配置yapi接口
    第24课
  • 原文地址:https://www.cnblogs.com/fangyuan303687320/p/5291217.html
Copyright © 2011-2022 走看看