したがって、私は単一のTomcatに複数のアプリケーションがあり、しばらくしてサービスを再起動せずにそれらを更新する必要があります。tomcat上の特定のアプリケーションのスレッドリスト
Tomcat 7でアプリケーションをリロードしたり再デプロイしたときに(つまり、決して終わらないTimerThreadにアクセスできないクラスによって生成された)リークを防ぐために、私はコンテキストを破棄するときにスレッドをリストすることにしました力でそれらを停止/中断する。 私はそれが完璧なアプローチのようには聞こえないことを知っていますが、それはうまくスレッドを閉じることができた点を見つけることができなかったので、動作しているようです。したがって、私はこれらのリークを発生させることに固執しています。
「Thread.getAllStackTraces()」と表示されていますが、明らかにJVM内のすべてのスレッドが表示されます。特定のアプリケーションのスレッドが必要なので、それらを繰り返し処理できます私が中断しなければならないものを見つけてください。 "getName()"を使用して検索しました。まあ
、誰もがこの上で私を明確にすることができれば...
のJava 7 のTomcat 7
は、ターミナルでkill -3 processIdを使用でき、スレッドスタックトレースをログファイルにダンプします。 – Jango
実際に私はそれらをJavaコード内で見つける必要があります。だから私は、アプリケーションがシャットダウンしているときにそれらを中断することができます。 – LucasJohn
これはあなたが求めている質問ではないことは分かっていますが、私の場合は、Webappごとに専用のTomcatインスタンスを実行したいと思います。 Tomcatは軽量なので、パフォーマンス上の問題は発生せず、他のWebアプリケーションに影響を与えることなく任意のWebアプリケーションを強制的に削除または再デプロイできます。また、グローバルではなく、アプリケーションごとにJVMメモリ設定を微調整することもできます。 –