我正在使用OutputStream
和InputStream
来读写.properties文件:
try (OutputStream output = new FileOutputStream(path)) {
// ...
output.close();
} catch (IOException e) {
e.printStackTrace();
}
try (InputStream input = new FileInputStream(path)) {
// ...
input.close();
} catch (IOException e) {
e.printStackTrace();
}
但是我的IDE表示那些close()
调用是多余的。如果不关闭它们,是否会发生内存泄漏?在Java中如何工作?感谢您的帮助。
答案 0 :(得分:8)
使用D
:%norm! $p
语句将自动关闭资源,因此您的try-with-resources
呼叫确实是多余的。
您可以阅读有关此主题的更多信息here
答案 1 :(得分:0)
但是我的IDE表示那些close()调用是多余的。如果不关闭它们,是否会发生内存泄漏?在Java中如何工作?
当您对资源使用try时,不需要关闭任何资源,例如OutputStream或InputStream。它将由JVM自动处理。不会有内存泄漏。 怎么运行的。您可以引用它here
答案 2 :(得分:0)
在Java中,try-with-resources语句是一个try语句,用于声明一个或多个资源。该资源是一个对象,在完成程序后必须将其关闭。 try-with-resources语句可确保在执行语句结束时关闭每个资源,以防止内存泄漏。
Java编译器采用广泛而严格的编译时检查,以便可以在部署程序之前及早发现与语法相关的错误。强类型语言(如C ++)的优点之一是它允许进行广泛的编译时检查,因此可以及早发现错误。 此外,IDE会提前为我们提供足够的信息,以便我们确保高质量的代码。
有关更多信息,请访问here.