释放静态类实例变量

时间:2012-04-24 18:10:24

标签: java tomcat web-applications memcached spymemcached

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

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

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

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

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

- 感谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

该页面为MyCache类实现了Singleton Pattern。 单身人士不能被摧毁。

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