资源泄漏 java_java – Eclipse 4.2资源泄漏通过单独的close方法

我正在使用Eclipse 4.2并启用了资源泄漏警告.

在我看来,此代码产生了错误的资源泄漏警告.

public static void test(){

InputStream in = null;

try {

in = new FileInputStream("A");

} catch (IOException e) {

return;

}finally{

close(in);

}

}

public static void close(Closeable closeable) {

if (closeable != null) {

try {

closeable.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

如果我重构代码,并将close方法拉入finally块,一切都很好.

public static void test2(){

InputStream in = null;

try {

in = new FileInputStream("A");

} catch (IOException e) {

return;

}finally{

if (in != null) {

try {

in.close();

} catch (IOException e) {

e.printStackTrace()

}

}

}

}

我可以以某种方式删除这些警告,而不必复制close方法的代码,而不必禁用资源泄漏警告?

我找到了一个错误报告here,用于循环中出现类似的事情,但我的代码中没有循环.

解决方法:

>你应该看到’潜在的资源泄漏……’警告,如果没有,请打开一个错误.

>这里的主要问题是编译器不知道’close(..)’方法的作用.它可能会也可能不会关闭资源. (注意,编译器不执行过程间分析)

>您可以选择忽略“潜在资源泄漏”警告. (‘资源泄漏’警告保证是正确的,但’潜在……’警告不是正确的)

编辑:关于’资源泄漏’与’潜在资源泄漏’的说法

>我们的想法是,所有报告的“资源泄漏”警告都保证是正确的,但可能不是“全部”代码库中的资源泄漏.

>’潜在的资源泄漏’很好……潜在的问题.一些开发人员在知道出现问题但他们不知道在哪里时会发出“潜在……”警告.在这种情况下,潜在的警告有助于缩小搜索范围.其他一些开发人员不时会仔细检查潜在的警告,看看那里是否存在真正的问题.

理想情况下,我们希望编译器为我们提供完整且正确的问题集,但实现这一点存在限制:-)

标签:java,eclipse,compiler-warnings,eclipse-juno,resource-leak

来源: https://codeday.me/bug/20190626/1289713.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值