10

次のエラーがログインしているベースの Web アプリケーション上stopまたはundeploy/redeployの:Spring framework 3.0.5Tomcat7's catalina.out

SEVERE: The web application [/nomination##1.0-qa] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@4f43af8f]) and a value of type [org.springframework.security.core.context.SecurityContextImpl] (value [org.springframework.security.core.context.SecurityContextImpl@ffffffff: Null authentication]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

私は当初、実装ServletContextListenerclose()そこでのコンテキストを考えていました。ただし、ContextLoaderListener実装ServletContextListenerが次のように設定されていることがわかりましたweb.xml

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Javadoc から:

**contextDestroyed**

public void contextDestroyed(ServletContextEvent event)
Close the root web application context.
Specified by:
contextDestroyed in interface ServletContextListener

それで、私の質問は、なぜ ThreadLocal がきれいに解放されないのContextLoaderListener.contextDestroyed()ですか?

エラーが発生してPermGenおり、調査中にこれが見つかりました。いくつかの場所に次のようなコードがあります。

ApplicationContext context = WebApplicationContextUtils
            .getWebApplicationContext(se.getSession().getServletContext());

MyBeanClass x = context.getBean(
            "myBean", MyBeanClass.class);
x.someMethod(); 

上記のスニペットがクリーン シャットダウンを停止しているのだろうか? どんなポインタでも大歓迎です。

4

1 に答える 1

0

hotdeploy には注意が必要な問題がたくさんあります。

1-データベース ドライバの登録解除ここを参照してください

2-マルチタスク アプリでタスクを閉じる: 開発モードでの再起動を約 1 時間遅らせることができます。

3-Spring のコンテキストを強制終了: 上記で行いましたが、XML フォーム XML をインポートしないように注意してください。

4-JVM メモリに存在するキャッシュされたオブジェクトを削除します:小さなオブジェクトを作成します。コンストラクタで Bean を初期化していますか? メソッドスコープでそれらを殺し続けるために、コンストラクタをなしに変更してください!Bean を呼び出すクラスにはいくつのメソッドがありますか? 多くのメソッド呼び出し bean が、スコープから出た後に java kill オブジェクトを予期しない場合、jvm はパフォーマンスのためにそれを保持します..、クラスを小さくしてください!.

あなたのコードはどうですか?ループの外で変数を宣言していますか? 使用後に=nullリストまたはオブジェクトですか?

5-Tomcat の開始時間と停止時間を増やすことができます。

rebel または springboot プロジェクトも helper として参照してください。

于 2014-06-13T08:13:19.203 に答える