我有一个名为JavaShellStream的类,它扩展了接口Closeable和Autocloseable。但是,当我使用这个类时,并且不调用它的方法,就不会触发资源泄漏的警告。我有另一个名为JavaShell的类,它有一个名为exec(String cmd)的方法,它返回一个JavaShellStream对象。当我以以下方式创建新的JavaShellStream对象时,不会触发资源泄漏警告:
//workingDir is a File object that sets the working directory
JavaShell js = new JavaShell(workingDir);
//execute the "ls" command and retrieve output as a JavaShellStream
JavaShellStream jss = js.exec("ls");
/*
* some code to read the text from the stream
* but DOES NOT close the stream
*/
// Note that I am NOT calling the close() method为什么这里没有触发任何警告,因为JavaShellStream jss从未关闭过,因此出现了资源泄漏?here的回答是,触发它所需要的只是实现接口Closeable,但是我的类实现了Closeable和Autocloseable,但在未关闭时不会触发任何警告。
发布于 2016-11-03 16:48:46
如果您正在使用Eclipse (正如链接问题所涉及的那样),则有一个选项可以在可能发生资源泄漏的情况下显示警告。
转到Window > Preferences > Java > Compiler >Error/警告,并将“潜在资源泄漏”的严重性级别设置为警告。
https://stackoverflow.com/questions/40406888
复制相似问题