0
1.使用成员变量在shrink过程中存储有效的connection,避免每次shrink new新的对象
shrinkConnections在shrink过程中只保存有效的链接(包括keepAlive),需要移除的链接依旧保存在evictConnections中 checkCount的意思应该是需要从当前链接池中移除的链接数量(为了保证连接数量尽可能接近min-idle设置的数量),和循环i做对比并不正确,应该和移除数量 evictCount 进行对比,在 minEvictableIdleTimeMillis 和 maxEvictableIdleTimeMillis 之间也可以从连接池中移除 System.arraycopy 的使用优化,仅填充数组非 null 值部分位置,提高效率