0

我们用 weblogic10.3+bea jdk1.6+hibernate3+c3p0 0.9.1.2+oracle 9.2.8 运行了一个 java web 应用服务器。当我们使用ojdbc6将数据库升级到oracle11gx64集群时,我们遇到了很多错误。

首先出现以下错误消息,应用程序无法每隔几小时连接到数据库:

 *com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@2a01aa -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
2016-01-28 18:09:55 com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@2a01aa -- APPARENT DEADLOCK!!! Complete Status: 
    Managed Threads: 3
    Active Threads: 3
    Active Tasks:*

然后我们改变了配置“hibernate.c3p0.max_statements”=0,这个错误消失了,但是出现了其他的OutOfMemoryError:

引起:javassist.CannotCompileException:由 java.lang.OutOfMemoryError:类分配,188463944 加载,187957248 占用 JVM@check_alloc (src/jvm/model/classload/classalloc.c:118)。org.jboss.seam.util.ProxyFactory.createClass3(ProxyFactory.java:350) 的 javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:169) 的 67744 字节 ... 77 更多 原因:java.lang。 OutOfMemoryError:类分配,188463944 加载,187957248 占用 JVM@check_alloc (src/jvm/model/classload/classalloc.c:118)。67744 字节

任何人都可以帮助我吗?提前致谢!

4

1 回答 1

0

更新到最新的 c3p0(现为 0.9.5.2)。

如果对您有用,请继续使用语句缓存,但为避免死锁,请使用以下设置。

c3p0.statementCacheNumDeferredCloseThreads=1

请参阅文档

于 2016-01-29T02:38:17.757 回答