【发布时间】: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