diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 3d1946efff..b7a599fb2d 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -57,6 +57,7 @@ import com.alibaba.druid.util.ConcurrentIdentityHashMap; import com.alibaba.druid.util.JdbcUtils; /** + * @author ljw * @author wenshao */ public class DruidDataSource extends DruidAbstractDataSource implements DruidDataSourceMBean, ManagedDataSource, Referenceable { @@ -1112,15 +1113,12 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat final List evictList = new ArrayList(); lock.lock(); try { - for (int i = 0; i < poolingCount; ++i) { + final int checkCount = poolingCount - minIdle; + for (int i = 0; i < checkCount; ++i) { ConnectionHolder connection = connections[i]; - - if (poolingCount - evictList.size() <= minIdle) { - break; - } - evictList.add(connection); } + int removeCount = evictList.size(); if (removeCount > 0) { System.arraycopy(connections, removeCount, connections, 0, poolingCount - removeCount);