0

这将是我的第一个问题,所以如果我没有完成问题或遗漏了什么,请告诉我。

背景:嗯,我有一个基于 Java 的 Web 服务,它正在为 iPhone 应用程序提供服务。它与数据库有连接,为了提高性能,我使用 Memcached 实现了缓存。我使用的连接器是 spymemcached。

我的问题:我有一个与 memcached 服务器同步连接的静态类。我的参考是:http ://sacharya.com/using-memcached-with-java/

但是当我重新启动 memcached 服务器或在 tomcat 上部署另一个 jar 时,我收到此错误: Web 应用程序似乎已经启动了一个线程名称 [某个名称],但未能停止它。这很可能造成内存泄漏。

那么,如何在我可以在 tomcat 上重新启动或重新部署我的应用程序之前解除分配静态类?

- 谢谢。

4

2 回答 2

1

静态类不是问题。假设它位于 WEB-INF/lib 的 JAR 中,它将被卸载。问题是线程。无论启动该线程需要停止它。有关 Tomcat 内存泄漏预防和检测的更多详细信息,请参阅此演示文稿:http: //people.apache.org/~markt/presentations/2010-11-04-Memory-Leaks-60mins.pdf

于 2012-04-24T18:20:32.667 回答
-1

该页面实现了 MyCache 类的单例模式。单例不能被销毁。

也许您可以定义一个 ServletContextListener(或应用服务器中的类似侦听器)来手动停止线程。

于 2012-04-24T18:24:00.793 回答