1

java 、 GWT 、および mysql で休止状態を使用しています。あまりにも多くの接続例外を回避するために、アプリケーションで c3p0 を構成していますが、構成後、アプリケーションを tomcat にデプロイしてアプリケーションを実行すると、5 から 10 の要求アプリケーションがクラッシュし、Tomcat ログで次の例外が繰り返し発生します。

org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/war] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@1d2aa39]) and a value of type [com.google.inject.servlet.ServletDefinition$2] (value [com.google.inject.servlet.ServletDefinition$2@ef3675]) 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.

私の c3p0 構成は次のとおりです。

<property name="connection.provider_class"> org.hibernate.connection.C3P0ConnectionProvider</property>
   <property name="hibernate.connection.autoReconnect">true</property>
   <property name="hibernate.c3p0.acquire_increment">3</property>
   <property name="hibernate.c3p0.idle_test_period">5</property>
   <property name="hibernate.c3p0.max_size">50</property>
   <property name="hibernate.c3p0.max_statements">0</property>
   <property name="hibernate.c3p0.min_size">0</property>
   <property name="hibernate.c3p0.timeout">5</property>
   <property name="hibernate.c3p0.idleConnectionTestPeriod">5</property>

誰かが解決策を知っていれば助けてください...事前に感謝します..

4

3 に答える 3

2

これは、アプリケーションを再デプロイするときに発生するクラスローダー関連のメモリ リークです。

このタイプのメモリ リークの詳細については、この質問を参照してください。

あなたの場合の問題は、Google Guiceの Guava 依存関係のバグです。

于 2012-07-24T08:18:07.993 に答える
2

これはクラッシュの原因ではありませんが、その影響です。アプリはまだ不明な理由でクラッシュし、混乱を引き起こしています。エラーはその混乱に関係しています。

于 2012-07-23T10:01:10.517 に答える
0

これは例外の原因ではなく、例外の結果です。アプリがクラッシュする原因として最も可能性が高いのは、コード内のメモリ リークです。何かをする前に、最終ブロックで接続が適切に閉じられていることを確認してください...

于 2012-09-12T09:34:41.627 に答える