JDBC工具类中的流不需要关闭吗?

网上看了好多的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的析构函数会自动调用
而作为局部变量,函数执行完就不再引用,那么垃圾回收器会回收它们,从而调用析构函数,从而关闭。

所以一般来说没问题。

但是,当你的连接是稀缺资源,而内存很充足的时候,垃圾回收器就比较“懒惰”,那么你就要自己释放,不能等着自动回收。

还有就是作为静态的、全局的变量,那么也最好自己关闭。