Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- lazy loading
- scanner
- EFCore
- 코드프로그래머스
- 에스가든스냅
- 대전본식영상
- dbContext
- vscode
- minimalAPI
- Store
- JSON
- JavaScript
- error
- LINQ
- Config
- mac
- 명시적외래키
- Request
- ORM
- 상속
- React
- 스냅잘찍음
- ViewModel
- 라도무스dvd
- .net
- extjs
- intellij
- c#
- c#코딩의기술실전편
- extraParams
Archives
- Today
- Total
ejyoo's 개발 노트
[Java] Scanner를 사용하고 자원 정리 측면에서 닫아야 할까? 본문
궁금해요 궁금해
코드프로그래머스에서 문제를 풀다가 Scanner를 닫는 사람이 있어서 궁금해졌다.
꼭 닫아야할까? JVM이 자동으로 정리해주지 않을까?
궁금증 해소
Scanner 객체를 초기화할 때, 어떤 파라미터를 주었냐에 따라 Scanner의 close() 메소드를 사용하는 것이 좋을 수 있다.그런데 코드프로그래머스에서 사용하는 Scanner는 대부분 사용자에게 입력을 받는 것이여서, 입력이 끝나고 나면 프로그램이 종료되면서 JVM이 자동으로 리소스를 정리해준다고 한다.
무조건적으로 Scanner를 사용하고 닫게되면 만약 System.in을 사용하는 경우 더이상 자원을 사용할 수 없어서 Scanner 객체를 새로 만들어야 할 것이다.
결론
System.in 인 경우 Scanner를 close() 호출하는 것은 필수가 아니다. 프로그램이 종료되면 JVM이 자동으로 정리해준다.
참고
- Scanner 클래스는 Closeable인터페이스를 구현한다. 사용이 끝난 후에 리소스를 해제하는 것이 중요하긴 하다.
- 파일이나 네트워크 리소스와 같은 외부 리소스를 사용할 때는 반드시 close()를 호출하여 자원을 정리해야 한다.