Tomcat 8内存泄漏

时间:2015-09-30 06:40:39

标签: tomcat memory-leaks spring-boot tomcat8

我正在使用Spring / Spring Boot / MySQL开发Java Web应用程序并将其部署到Tomcat 8。

在Tomcat Web应用程序管理器中,单击Reload按钮,成功重新部署后,Find Leaks按钮会显示以下消息:

The following web applications were stopped (reloaded, undeployed), but their
classes from previous runs are still loaded in memory, thus causing a memory
leak (use a profiler to confirm):
/domain-api
/domain-api

我的Tomcat日志不包含有关可能的内存泄漏的消息..

现在看起来我的应用程序的两个实例(domain-api)启动并运行..如何检查它以及如何解决它?

1 个答案:

答案 0 :(得分:0)

这并不意味着您的应用程序存在内存泄漏。 tomcat管理器中的消息意味着,仍然有一些来自先前部署的Web应用程序的类尚未被垃圾回收。

如果它不是内存泄漏,则可以通过将permGenSpace设置为较低的值来删除此警告。这将强制GC在您重新部署应用程序后卸载所有类。

确保您没有内存泄漏的另一种方法是重新部署应用程序几次,然后创建一个heapdump并使用Eclipse Memory Analyzer等分析器对其进行分析。在那里,您应该查找无法进行垃圾回收的WebappClassLoader类型的实例。