当前位置: 首页 > Java > 正文

Tomcat7:Memory Leak异常

1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

今天发现tomcat出现自动终止情况。检查日志发现如下错误:

1
2
Apr 24, 2013 11:14:17 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [] created a ThreadLocal with key of type [com.mongodb.DBTCPConnector$1] (value [com.mongodb.DBTCPConnector$1@634defe2]) and a value of type [com.mongodb.DBTCPConnector.MyPort] (value [com.mongodb.DBTCPConnector$MyPort@6e84d7ee]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

别的异常未发现。首先检查了一下tomcat的server.xml和catalina.sh的配置。
1.对catalina.sh的配置做了优化。

1
JAVA_OPTS="-Xms4096m -Xmx4096m -Xss512K -XX:PermSize=256m -XX:MaxPermSize=512m"

2.server.xml注释掉以下行

1
2
3
4
5
6
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <!--
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  -->

3.对mongodb 做了索引优化

由于日志未发现其它异常,怀疑有可能是内存溢出直接导致tomcat挂掉。做了上述优化后,未见出现异常,需进一步观察。

最后找出原因:mongodb 导致的,mongodb 加载数据很多,直接导致Memory Leak。

本文固定链接: http://www.chepoo.com/tomcat7-memory-leak-error.html | IT技术精华网

Tomcat7:Memory Leak异常:等您坐沙发呢!

发表评论