[Java] BufferedReader close() 사용 이유에 대해

Noul·2024년 5월 19일

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

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

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

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

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

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

profile
고민하고 트레이드오프

0개의 댓글