我正在使用Apache Commons Pool 2
,我已经将配置设置testWhileIdle
为true,这意味着Pool框架将检查它们是否有效的空闲对象。
我会问是否定期进行此检查,如果是,默认间隔是多少,以及如何更改它。
我这样问是因为池中的对象应该定期连接到服务器以保持活动状态,我认为池的validateObject
方法是实现这一点的好地方。
根据@user7294900 的评论,有两个配置参数:
timeBetweenEvictionRunsMillis
, 默认值为 -1minEvictableIdleTimeMillis
, 默认值为 1800*60*30
我有以下两个问题:
- 这两个参数有什么区别?
- 我将它们都设置为5000,并且池中有8个对象,我在我的PooledObjectFactory的
validateObject
方法中打印了对象的哈希码,我发现只打印了3个对象的哈希码,然后再没有打印更多消息,看起来validateObject
不是每 5 秒调用一次,或者调用validateObject
被卡住了?
我发现问题了,请看评论