我正在使用java,GWT和hibernate与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>
如果有人知道解决方案,请帮助我......
提前谢谢..
答案 0 :(得分:2)
这不是您的崩溃的原因,但其效果 - 您的应用程序因为一个未知的原因而崩溃并留下了一团糟。错误与那个混乱有关。
答案 1 :(得分:2)
这是与重新部署应用程序时发生的类加载器相关的内存泄漏。
有关此类内存泄漏的详细信息,请参阅this question。
您的案例中的问题是Google Guice的a bug in the Guava dependency。
答案 2 :(得分:1)
答案 3 :(得分:0)
这不是您的异常的原因,而是异常的结果。应用程序崩溃的最可能原因是代码中存在内存泄漏。在做任何事情之前,确保你的连接在finally块中正确关闭......