728x90
- InputStream, OutputStream, Connetion 등의 자바 라이브러리를 직접 close() 해줘야하는 경우가 있다
- 왜 이것들은 close()를 해주고 다른객체들은 GC가 수거해 갈까?
- 메모리를 관리하며, 더이상 필요없는 객체는 GC가 수거해 가는데, Stream의 경우에는 외부 자원을 가져와서 쓰기때문에, 하드데이터 GC가 이를 알지 못해 close 를 통해서 처리한다.
- 외부 라이브러리를 쓸때 한번씩 더 체크해야할 상황인듯.
- 기존 try finally 방식도 나쁘지는 않다고 생각하지만, 코드가 더 깔끔하고, 실수할 여지가 없는 try-with-resources 를 사용하자.
- *참고로 코틀린은 use 를 사용한다
- 왜 이것들은 close()를 해주고 다른객체들은 GC가 수거해 갈까?
728x90
'공부 > 이펙티브자바' 카테고리의 다른 글
[이펙티브자바]item11.equals를 재정의하려거든 hashCode도 재정의하라. (0) | 2023.01.17 |
---|---|
[이펙티브자바]item10.equals는 일반 규약을 지켜 재정의하라. (0) | 2023.01.17 |
[이펙티브자바]item8.finalizer와 cleaner 사용을 피하라. (0) | 2023.01.17 |
[이펙티브자바]item7.다 쓴 객체 참조를 해제하라. (0) | 2023.01.13 |
[이펙티브자바]item6.불필요한 객체 생성을 피하라 (0) | 2023.01.13 |
댓글