調用 rs.close() 後,ResultSet 對象是否立即被垃圾回收?
不是。close() 的語義是釋放數據庫端游標、網絡連接佔用的資源,屬於顯式資源釋放。Java 對象何時被 GC 回收取決於 JVM 堆內存壓力和 GC 算法,與 close() 無直接關係。
try (Connection conn = ...;
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery()) {
// 使用 rs
} // 自動調用 close(),由 try-with-resources 保證
try-with-resources (Java 7+) 自動關閉。finalize() 或 GC 釋放數據庫資源,會導致連接泄漏。