알고리즘 문제를 풀면서 문득 생긴 궁금증이 있었다.

‘BufferedReader를 사용해서 입력을 받고 실행하면 굳이 close()를 사용하지 않아도 정상적으로 컴파일 되는데 close()를 사용하지 않아도 되는가?’

찾아 본 결과, BufferedReader의 경우 close() 메소드를 명시하지 않아도 가비지컬렉터에 의해 BufferedReader가 자동으로 정리된다고 한다.

하지만 프로그램이 오랫동안 실행되거나 대용량의 데이터를 처리하는 경우에는 버퍼링된 데이터가 모두 출력되지 않거나 리소스가 해제되지 않을 수 있기 때문에 close()를 호출하는 것이 좋다.

이렇게 함으로써 버퍼를 비우고 안전하게 해제하여 메모리 누수나 시스템 리소스 부족 문제를 방지할 수 있다.

물론 가비지컬렉터가 적절하게 처리해주고 위와 같은 문제가 발생하지 않더라도 자원 관리의 측면에서 close()를 명시해주는 것이 좋을 것 같다.

Categories:

Updated:

Leave a comment