java 物理资源回收 finally与try

java垃圾回收机制不会回收任何物理资源(磁盘文件、数据库连接、网络连接),垃圾回收机制只能回收堆内存中对象所占用的内存。

方法一使用finally块,在finally块中写入资源回收代码,如下:

public class FinallyTest {

    public static void main(String[] args) {

        FileInputStream fis = null;
        try {

            fis = new FileInputStream("a.txt");
        }
        catch (IOException e) {

            System.out.println(e.getMessage());
        }

        // 在finally块中回收物理资源
        finally {

            try {
                // 关闭文件输入流,释放与之关联的系统资源
                fis.close();
            }
            catch (Exception e) {
                System.out.println(e);
            }
        }
    }
}

 

另一种更简洁的方法是使用try语句。

在try关键字后面紧跟一对圆括号,圆括号中声明初始化需要自动关闭的资源。

public class FinallyTest {

    public static void main(String[] args) {

        // 将需要关闭的资源放入try的()中,try块结束后自动释放物理资源
        try (FileInputStream fis = new FileInputStream("a.txt"))
        {

            byte[] b = new byte[1024];
            fis.read(b);
        }
        catch (IOException e) {

            System.out.println(e.getMessage());
        }
    }
}

 

posted on 2018-02-03 19:46  Deltadeblog  阅读(472)  评论(0编辑  收藏  举报

导航