首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java ResultSet.close() 作用解析:釋放數據庫資源而非立即垃圾回收

     編輯:程式設計疑難解答

問題

調用 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 釋放數據庫資源,會導致連接泄漏。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved