用户工具

站点工具


code:java:destroy-object

Java 销毁对象

Java 对象的销毁尽应该由程序自行控制,而不应该依赖 GC 对 finalizers 方法的调用。

为了确保对象被正确的销毁,我们通常使用 try{} finally{},然后在 finally 里对对象进行销毁操作。以 Inputstream 为例:

InputStream is = openFile("file");
try {
    // do business
} catch(IOException ioe) {
    // handle exception
} finally {
    if (is != null) {
        try {
            is.close();
        } catch (IOException ignore) {
        }
    }
}

但是从 java 7 之后可以使用更加简单的语法:

try ( InputStream is = openFile("file")) {
    // do business
} catch (IOException ioe) {
    // handle exception
}

也就是在 try 的 statement 里声明实现了 AutoCloseable 接口的对象,这样 jvm(compiler生成了字节码) 就会在 try 成功或者异常的时候自动调用 AutoCloseable 的 close 方法来关闭了。

code/java/destroy-object.txt · 最后更改: 2018/12/31 18:41 (外部编辑)