网上看了好多的JDBC工具类,类似下面代码,发现里面的流都没有关闭,是不需要关闭吗?有大神解答一下吗?
JDBCUtils工具类配置文件的读取方式
//第一种方式
Properties prop= new Properties();
//读取文件 通过类加载读取
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("data.properties");
prop.load(is);
String driverClass = prop.getProperty("driverClass");
String url = prop.getProperty("url");
String username = prop.getProperty("username");
String password = prop.getProperty("password");
//第二种方式
Properties properties = new Properties();
// 读取属性文件:使用Java中Properties的对象.
InputStream is = new FileInputStream("src/jdbc.properties");
properties = new Properties();
properties.load(is);
String driverClass = properties.getProperty("driverClass");
String url = properties.getProperty("url");
String username = properties.getProperty("username");
String password = properties.getProperty("password");
因为Stream的析构函数会自动调用
而作为局部变量,函数执行完就不再引用,那么垃圾回收器会回收它们,从而调用析构函数,从而关闭。
所以一般来说没问题。
但是,当你的连接是稀缺资源,而内存很充足的时候,垃圾回收器就比较“懒惰”,那么你就要自己释放,不能等着自动回收。
还有就是作为静态的、全局的变量,那么也最好自己关闭。