用远程部署的时候,每次deploy成功后,用TOP命令发现内存占用增大,而且随着时间的增长越来越大,以至于到了6G的。此时用jconsole 或者主动打印用jvm的堆栈大小是正常。
的。在设置jvm的Xmx参数为800M或者2G后重启tomcat,然后reload依然会出现此问题。用jprofiler工具也没发现异常。
每次redeploy后,用tomcat manager的内存溢出检测结果如下图:
jconsole的显示
但是top命令显示内存已经占到1.8G!
最后观察,tomcat的日志输入
有如下信息
09-Sep-2016 13:28:46.491 INFO [http-nio-7050-exec-46] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/moon]
2016-09-09 13:28:46,497 INFO (AbstractApplicationContext.java:960)- Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1c953be3: startup date [Fri Sep 09 13:24:41 CST 2016]; root of context hierarchy
2016-09-09 13:28:46,499 INFO (MBeanExporter.java:449)- Unregistering JMX-exposed beans on shutdown
2016-09-09 13:28:46,500 INFO (MBeanRegistrationSupport.java:241)- Unregistering JMX-exposed beans
09-Sep-2016 13:28:46.508 WARNING [http-nio-7050-exec-46] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [moon] appears to have started a thread named [commons-pool-EvictionTimer] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Object.wait(Native Method)
java.util.TimerThread.mainLoop(Timer.java:552)
java.util.TimerThread.run(Timer.java:505)
09-Sep-2016 13:28:46.526 INFO [http-nio-7050-exec-46] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /data/web/huodong/clusters/apache-tomcat-8.5.4/webapps/moon.war
问题出在
[commons-pool-EvictionTimer]