zhuakuang0 2020-05-02
在说 evict 之前,我们先看下 池对象的状态定义:
public enum PooledObjectState { IDLE, ALLOCATED, EVICTION, EVICTION_RETURN_TO_HEAD, VALIDATION, VALIDATION_PREALLOCATED, VALIDATION_RETURN_TO_HEAD, INVALID, ABANDONED, RETURNING; }
所谓 evict 就是把池里的对象踢出去,Evictor 类专门负责这个任务,它会调用 evict 方法,这个 evict 方法用 EvictionPolicy 类来做 evict 判断。
evict = evictionPolicy.evict(evictionConfig, underTest, this.idleObjects.size());