Java 资源释放顺序

java中需要手动释放的资源常见的有以下两个:

  1. 流相关资源

    流相关资源一般遵循:

    a) 先开后关,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输入流,但是一般关闭输入输出流操作都是在读写完成后的finally中执行的,所以即使先关输入流,再关输出流也不会任何问题,因为读写操作没有进行了。

    b) 先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先

    BufferedInputStream,再关FileInputStream。但要注意的是由于一般处理流持有节点流引用,处理流都会在自己的close方法中去关闭节点流,因此我们只要关闭外层的处理流即可,如果多此一举的关闭节点流反而会报错。如BufferedInputStream包装了FileInputStream,我们只要关闭BufferedInputStream即可

    c) 只关处理流,不关节点流,原因见上述第二条

    流相关文章参考:http://blog.csdn.net/u012250875/article/details/78341874

  2. jdbc相关资源

    ConnectionPrepareStatementResultSet三个资源。这三个资源的获取顺序是:

    先获得一个jdbc连接对象Connection,再通过连接对象获得一个sql预处理对象PrepareStatement,如果是查询的话最后还会通过PrepareStatement对象获取一个结果集ResultSet对象,关闭顺序与获取顺序正好相反。先关ResultSet,再关PrepareStatement,最后关Connection

正确的资源释放语句格式

try{
    //io操作。
    //out.flush();
}catch(XxxException e){
    //异常处理
    throw e;
}finally{
    if(in != null){
        in.close();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JDBC基础知识 一、采用JDBC访问数据库的基本步骤: A.载入JDBC驱动程序 B.定义连接URL ...
    91数据阅读 9,328评论 0 20
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • 概述 java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。java.io ...
    Steven1997阅读 13,025评论 1 25
  • 昨晚快12点的时候在180天文案营里,下了一阵红包雨,包括我在内的没有完成日志的几个人每个人50元红包发出来了。 ...
    励志宝妈阅读 3,954评论 0 0
  • 感恩大家,从今天开始我的连续一百天时间管理学习心得分享就正式开始了,有了你们的陪伴,我将努力前行! 一日之计在于晨...
    小帆爱阳光阅读 2,761评论 2 1