说,我正在使用连接到数据库命名con(或套接字或其他任何东西Closable).之后发生了什么close()?是con变得相等null还是还有东西?和之间有什么区别con.close()和con = null?
当您调用时close,该对象应释放它在幕后使用的所有资源.如果是一个实例java.sql.Connection,它将是两件事之一:
DriverManager.getConnection(...).Connection通过处理DataSource这是由一个数据库连接池处理.设置对象con = null只是为null变量赋值,引用仍然有效,直到垃圾收集器决定删除它.仍然,设置Connection为null 不调用close方法,因此您可以有内存泄漏.
作为最佳实践,你应该总是调用close上的实例方法Closeable或使用try-with-resources(可用自Java 7中),以确保资源(S)为(被)一直处于关闭状态.