Closeable
및 Autocloseable
인터페이스를 확장하는 JavaShellStream
클래스가 있습니다. 그러나 클래스를 사용할 때 close()
메서드을 호출하지 않으면 리소스 누수가 있다는 경고가 표시되지 않습니다. JavaShell
이라는 또 다른 클래스가 있습니다.이 클래스에는 JavaShellStream
개체를 반환하는 exec(String cmd)
이라는 메서드가 있습니다. 나는 다음과 같은 방법으로 새로운 JavaShellStream
객체를 생성 할 때, 어떤 자원 누출 경고가 트리거되지 않습니다 :Java "리소스 누출"경고가 트리거되지 않음 때
JavaShellStream jss
이 종료되지 않습니다 때문에 리소스 누수가 있다고 여기 트리거되지 왜
//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
? here의 대답은 인터페이스를 구현하는 것이고 Closeable
인터페이스를 구현하지만 내 클래스는 Closeable
과 Autocloseable
을 모두 구현하지만 닫히지 않을 때는 경고를 발생시키지 않는다고 말합니다.
동일한 문제가 있습니다. 이 문제는 리소스 인스턴스가 새로 생성되는 대신 메서드에 의해 반환 될 때 발생합니다. 불행히도 아직 해결책이 없습니다. –