lovefamilyC 2019-03-29 11:57 采纳率: 100%
浏览 969
已采纳

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");
  • 写回答

1条回答

  • threenewbee 2019-03-29 12:44
    关注

    因为Stream的析构函数会自动调用
    而作为局部变量,函数执行完就不再引用,那么垃圾回收器会回收它们,从而调用析构函数,从而关闭。

    所以一般来说没问题。

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用三极管设计—个共射极放大电路
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示