【发布时间】:2020-08-18 10:27:44
【问题描述】:
我有这个对象池(使用 org.apache.commons.pool2),我从中借用(或创建)一个。
我设置的最大空闲大小为 3(最大大小为 5)。设置的前提是如果空闲对象超过 3 个,这些对象将被销毁 (BasePooledObjectFactory#destroyObject)
这在我的系统中的作用是创建和销毁多个对象,这很昂贵。我只希望它在空闲较长时间(比如 1 分钟)时被销毁。
我尝试设置 setMinEvictableIdleTimeMillis(我可以看到的默认值为 30 分钟)来执行此操作。默认值以及设置似乎都不起作用 - 我可以看到,当空闲计数超过 4 时,该对象经常被销毁。
为什么会发生这种情况?如何确保空闲对象不会被如此频繁地破坏?
【问题讨论】:
-
未验证,因此仅作为评论:我认为您想要的是 minIdle = 3,maxIdle = maxTotal = 5。=> 无限期保留至少 3 个空闲对象,如果空闲更少则最多 5 个比 minEvictableIdleTime。
标签: java object-pooling apache-commons-pool