【问题标题】:Tomcat 8 memory leakTomcat 8 内存泄漏
【发布时间】:2015-12-27 20:19:07
【问题描述】:

我正在使用 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)的 2 个实例正在运行。如何检查它以及如何修复它?

【问题讨论】:

    标签: tomcat memory-leaks spring-boot tomcat8


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 2014-12-25
      • 1970-01-01
      • 2021-12-17
      • 2012-08-20
      • 2012-08-06
      • 2013-07-29
      • 2015-06-04
      • 2014-04-03
      相关资源
      最近更新 更多