1
我使用Apache Commons Pool 2
,我已将配置testWhileIdle
设置为true,这意味着Pool框架将检查它们是否有效的空闲对象。什么时间间隔来验证Apache Commons Pool中的空闲对象2
我会问是否发生这种周期性的检查,如果是这样,什么是默认的时间间隔,以及如何我可以改变它。
我这样问是因为池中的对象应该定期连接到服务器以保持活力,我认为pool的validateObject
方法是实现这一点的好地方。
每@ user7294900的评论中,有两个配置参数:
timeBetweenEvictionRunsMillis
,默认值是-1minEvictableIdleTimeMillis
,默认值是1800 *我有以下60 * 30
两个问题:
- 这两个参数有什么区别ERS?
- 我将它们都设置为5000,并且在池中有8个对象,我在PooledObjectFactory的
validateObject
方法中打印对象的哈希码,发现只有3个对象的哈希码已经打印出来,消息再次打印,看起来validateObject
的不是每5秒钟调用一次,或者对validateObject
的呼叫卡住了?
我想通了这个问题,请查看评论
感谢@ user7294900为你回答,我每次更新您的意见,我的问题,你可以请大家看看? – Tom
对不起,我想通了这个问题...'timeBetweenEvictionRunsMillis'是安排任务,以验证对象的间隔,而'minEvictableIdleTimeMillis'是从pool.Since被驱逐的两个参数是相同的空闲时间,似乎逐出胜利 – Tom
minEvictableIdleTimeMillis的默认值为1000 * 60 * 30 –