【问题标题】:How to fix memory leak issue In tomcat and found what are the causes of memory leak如何解决内存泄漏问题在tomcat中发现内存泄漏的原因是什么
【发布时间】:2017-04-28 04:27:01
【问题描述】:

我已经在 tomcat 服务器上部署了代码,并且经常更新 war 文件。 当我单击内存泄漏选项时,我收到此错误(错误消息如下 -)。要修复它,我正在重新启动服务器,但这不是有效的解决方案。所以我想知道我在代码中做错了什么,以便我可以修复它。使用 maven、Spring、JPA、java 8 。

以下 Web 应用程序已停止(重新加载、取消部署),但它们的 以前运行的类仍然加载到内存中,从而导致内存 泄漏(使用分析器确认):

【问题讨论】:

  • 您是否尝试通过更新 webapp 文件进行热部署?
  • 是的,我正在使用 maven Install 命令创建战争,然后使用 tomcat Web 界面手动上传该战争。
  • 通常 Tomcat 会生成泄漏检测识别的违规线程和线程本地的完整列表,我相信它最终会出现在日志中。发布它,我们可以提供帮助。
  • 如果您(或第 3 方库)启动线程或线程池,并且这些与应用程序生命周期不同步,通常会发生这种情况。 Spring 具有出色的生命周期管理(LifeCycle/SmartLifeCycle 接口),应该用于管理线程和池化资源。

标签: java maven tomcat memory memory-leaks


【解决方案1】:

您可以使用 jvisualVM.exe 在 tomcat 服务器的 catalina.bat/catalina.sh 文件中找到为 JAVA_HOME 指定的路径。

一旦你启动了 jvisualVM,就会进入你运行 tomcat 的 PID 进程。之后,您可以进入 Monitor 或 Profiler 选项卡,在那里您将了解您的 tomcat 占用了多少处理以及 JVM 中正在运行多少内部进程。

【讨论】:

    猜你喜欢
    • 2012-08-19
    • 2012-05-23
    • 1970-01-01
    • 2010-12-11
    • 2011-05-28
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多