1

我在 mysql 中使用 java、GWT 和 hibernate。为了避免太多的连接异常,我在我的应用程序中配置了 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

这不是你崩溃的原因,而是它的后果——你的应用程序由于未知的原因而崩溃并留下了一团糟。该错误与该混乱有关。

于 2012-07-23T10:01:10.517 回答
2

这是重新部署应用程序时发生的与类加载器相关的内存泄漏。

有关此类内存泄漏的更多信息,请参阅此问题

您的问题是Google Guice的 Guava 依赖项中的错误。

于 2012-07-24T08:18:07.993 回答
0

这不是您异常的原因,而是异常的结果。应用程序崩溃的最可能原因是代码中的内存泄漏。在做任何事情之前,请确保您的连接在 finally 块中正确关闭...

于 2012-09-12T09:34:41.627 回答