1

現在 tomcat7 を使用しています。私の Web アプリケーションは、停止時にタイマー メモリ リークを引き起こしました。ログは次のとおりです。

   SEVERE: A web application appears to have started a TimerThread     
   named [Timer-5] via the java.util.Timer API but has failed to stop it. 
   To prevent a memory leak, the timer (and hence the associated thread) 
   has been forcibly cancelled.   

ava.util.TimerWeb アプリでj を使用していません。

4

3 に答える 3

2

これは、コードが使用していることを必ずしも示しているわけではありません(ちなみに、ここjava.util.Timerで説明した理由により、Java EE Webアプリケーションでは非常に悪い考えです)。これは、Webアプリケーションのフォルダーで提供されるライブラリの一部として含めることもできます。どうやら、いくつかのライブラリは、が作成されたWebアプリケーションの起動時にまたはを自動登録しました。Timer/WEB-INF/libServletContextListenerServletContainerInitializerTimer

それがどのライブラリであるかを調査し、それに応じて修正/削除する必要があります。JARを抽出して、同封のコードを確認するか、JARを1つずつ削除します。犯人が見つかったらTimer、Java EE Webアプリでの使用は絶対に推奨されておらず、修正する必要があることをライブラリのメンテナに必ず報告します。

于 2012-05-24T00:14:29.247 に答える
0

これは私にはよくわかりません。RMI タイムアウト タイマーがあるように見えますが、それはすべて Tomcat の一部であるため、リークではないはずです。

于 2012-05-25T05:18:46.557 に答える
0

tomcat wikiには説明 (種類) とcommons-pool のこのバグへのリンクがあります。

Tomcat > 6.0.27 では、タイマー停止はオプションです。

于 2012-05-25T15:04:50.460 に答える