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 に答える