【问题标题】:Bonecp creates more bonecp-pool-watch-thread and bonecp-keep-alive-scheduler threadsBonecp 创建更多的 bonecp-pool-watch-thread 和 bonecp-keep-alive-scheduler 线程
【发布时间】:2015-05-24 19:07:34
【问题描述】:

我们正在使用 JNDIBoneCP 连接池创建数据库连接。一段时间后,bonecp 会创建更多 com.google.common.base.internal.Finalizerbonecp-pool-watch-threadbonecp-keep-alive-scheduler 活动线程。所以它需要更多的内存。它会导致 JVM 崩溃。

如何解决这个问题?任何控制线程数的配置。

名称:BoneCP-pool-watch-thread

State: WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@42256c51 
Total blocked: 0 Total waited: 1 

Stack trace: 
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) 
java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374) 
com.jolbox.bonecp.PoolWatchThread.run(PoolWatchThread.java:64) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
java.lang.Thread.run(Thread.java:744)

名称:com.google.common.base.internal.Finalizer

State: WAITING on java.lang.ref.ReferenceQueue$Lock@7035679c 
Total blocked: 0 Total waited: 1 

Stack trace: 
java.lang.Object.wait(Native Method) 
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135) 
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151) 
com.google.common.base.internal.Finalizer.run(Finalizer.java:131) 
java.lang.Thread.run(Thread.java:744)

名称:BoneCP-keep-alive-scheduler

State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@327a219f 
Total blocked: 0 Total waited: 5 

Stack trace: 
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226) 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082) 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090) 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807) 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
java.lang.Thread.run(Thread.java:744)

【问题讨论】:

    标签: connection-pooling bonecp


    【解决方案1】:

    这与 Guava 库错误有关。但是请注意,您应该考虑弃用 BoneCP 以支持 HikariCP。

    【讨论】:

      猜你喜欢
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2012-03-08
      • 1970-01-01
      • 2015-11-28
      • 2016-01-14
      • 1970-01-01
      相关资源
      最近更新 更多