Tomcat 8 内存泄漏

3

我正在使用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个回答

1
这并不意味着你的应用程序存在内存泄漏。Tomcat管理器中的消息只是意味着,仍然加载了先前部署的 Web 应用程序中尚未进行垃圾回收的某些类。
如果不是内存泄漏,则可以通过将 permGenSpace 设置为较低的值来消除此警告。这将强制 GC 在重新部署应用程序后卸载所有类。
确保没有内存泄漏的另一种方法是多次重新部署应用程序,然后创建堆转储并使用像 Eclipse Memory Analyzer 这样的分析器进行分析。在那里,您应该查找无法进行垃圾回收的 WebappClassLoader 类型的实例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接