2016-11-03 11 views
1

CloseableAutocloseable 인터페이스를 확장하는 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 인터페이스를 구현하지만 내 클래스는 CloseableAutocloseable을 모두 구현하지만 닫히지 않을 때는 경고를 발생시키지 않는다고 말합니다.

+0

동일한 문제가 있습니다. 이 문제는 리소스 인스턴스가 새로 생성되는 대신 메서드에 의해 반환 될 때 발생합니다. 불행히도 아직 해결책이 없습니다. –

답변

0

Eclipse를 사용하는 경우 (링크 된 질문과 관련하여) 리소스 누출 가능성이있는 경고를 표시하는 옵션이 있습니다.

이동 > 컴파일러 자바>> 기본 설정 >에 오류/경고, 그리고 경고 에 "잠재적 자원 누출"의 심각도 수준을 설정합니다.

+0

이미이 옵션을 사용할 수 있습니다. –