【问题标题】:tomcat classes from previous run remains之前运行的 tomcat 类仍然存在
【发布时间】:2011-02-10 15:29:26
【问题描述】:

我正在运行一个使用 spring、hibernate、jsf 等的应用程序。该应用程序还使用 ha-jdbc 使数据库具有高可用性。应用第一次部署时,应用运行流畅,但卸载重新部署时,tomcat报如下错误:

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

我想知道如何摆脱这个问题。有天才吗?

提前致谢。

【问题讨论】:

  • 当你不停止线程时会发生这种情况

标签: java tomcat6 high-availability


【解决方案1】:

使用分析器(visualvm 可以),做一个堆快照,找到延迟对象,找到引用链,思考为什么它们仍然被引用。

或者,只需为每个部署重新启动 tomcat。

【讨论】:

  • 感谢回复,重启不是一个选项。或者可能是最后的选择。但是有没有办法在tomcat取消部署时清理以前的类
  • @user582862 - 是的,通过修复应用中的内存泄漏。
  • 重启应该是第一选择。为什么同一台服务器如此重要?只需启动一个新服务器,然后杀死旧服务器。
  • 我希望我的主管明白这一点。他坚持应用程序需要继续运行,这样服务器就不能停止。
  • 无论如何,如果有任何替代方法,请告诉我。顺便问一下,热部署的最大数量是多少?我认为有一个限制不是吗?
猜你喜欢
  • 2012-06-01
  • 2019-09-10
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 2021-10-06
  • 2016-07-19
相关资源
最近更新 更多