Java - 内联表达式的资源释放

标签 java resources allocation

假设我有以下功能

public static void myfunc(String filename) {
    new FileInputStream(filename);
}

当我调用该函数时,是否会因为 FileInputStream 从未释放而导致资源泄漏?

以及将来的引用,有没有办法可以验证调用函数后资源尚未释放?

最佳答案

是的,存在资源泄漏。大多数 IDE(例如 Eclipse)都会发出警告来指示这一点。您可能应该这样做:

public static void myfunc(String filename) throws IOException {
    FileInputStream stream = null;
    try {
        stream = new FileInputStream(filename);
        ...
    } finally {
        stream.close();
    }
}

或者,如果您使用的是 Java 7,则可以使用 try-with-resource声明。

关于Java - 内联表达式的资源释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590706/

相关文章:

java - ViewPager、ListView和AsyncTask,第一页空白,第二页所有数据

java8 简化映射转换

java - 如何进一步调试以公开 groovy 脚本中元素中的值

c++ - 自解压可执行 C++

javascript - Ng-Repeat 在资源查询后不更新 - $apply() 不起作用

c - 使用数据结构来处理内存的个人 malloc 函数

c - 内存分配的差异

c++ - C++ 中的矩阵与数组的数组及其动态分配

java - 在 Swing 架上执行 Java 应用程序期间出现空白屏幕

.net - 我真的需要在每个Principal上调用Dispose()吗?