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