连接池未正确关闭
作者: wiscloud创建于 2026年1月15日更新于 2026年1月15日
在 JdbcConnectionPools 的 refreshDatasource 中,会创建新的 DatasourceWrapper 来替换旧的 DatasourceWrapper,旧的 DatasourceWrapper 如果不再被引用,就会被 GC 回收。但是,内部的 DataSource 对象是否一定会被正确回收呢?从我收集到的资料中,都说 DataSource 的生命周期被设计为应用生命周期,因此不存在 close 方法。但是,在各大连接池实现中,例如 HikariDataSource,实际上提供了 close 方法。我们是否可以认为,如果在应用运行期间,如果想手动销毁连接池,实际上需要调用 close 方法,而不仅仅是将 DataSource 变量设置为 null。
内容来源: jd-opensource/joyagent-jdgenie