Tomcat JDBC データ ソースの警告: メモリ リーク
設定された Tomcat JDBC データ ソースを使用して Tomcat 7.x をシャットダウンすると、次のような問題が発生する可能性があります。 catalina.out ログに次の警告が記録されるfile:
Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJDBC SEVERE: The web application [/my_webapp] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
この警告は、Web アプリケーションの停止時に JDBC ドライバーが適切に登録解除されていないためにメモリ リークが発生する可能性があることを示します。この問題を解決するには、DataSource に destroy メソッドを設定しているにもかかわらず、警告が表示され続けます。
メモリ リークの別の潜在的な原因が別の警告によって強調表示されます:
Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE: The web application [/my_webapp] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.
対処方法両方の警告:
MySQL コネクタ/ドライバー JAR ファイルを WAR ファイルから Tomcat lib フォルダーに移動します。ドライバーが含まれている WAR ファイルをデプロイすると、不適切なガベージ コレクションが原因でメモリ リークが発生する可能性があります。
「MySQL ステートメントキャンセルタイマー」スレッドが停止しない理由を特定します。このスレッドの開始場所を特定するために使用されているアプリケーション コードまたはサードパーティ ライブラリを確認し、アプリケーションのシャットダウン時にスレッドが適切に停止されていることを確認します。
これらの対策を実装することで、メモリ リークやメモリ リークを効果的に防ぐことができます。 catalina.out ログ ファイルの警告を回避してください。
以上がTomcat 7.x が JDBC データ ソースの使用時にメモリ リーク警告を発行するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。