자바 코드를 보다보면 close() 메소드가 작성되어 있는걸 볼 수 있다
그리고 자바를 공부하다 보면 자바는 더 이상 사용하지 않는 메모리를 해제하는 Garbage Collector를 알게 된다
여기서 생기는 궁금증은 GC가 알아서 메모리를 해제해주는데 close()를 작성해주는 이유는 무엇일까?
(아래 내용은 개발바닥 유튜브 오픈카톡방에 질문을 올려 알게된 내용을 정리 해둔것 입니다)
- 보통 close() 메서드가 있는 클래스들은 OS로부터 자원을 할당 받아 사용하는 네이티브 메소드들을 가지고 있는 경우들이 있는데
- 이렇게 C에서 자원을 할당 받은 경우 GC가 자원을 할당 받았는지 알 수가 없기 때문에
- close() 메서드를 통해서 자원을 그만쓴다라는 것을 알리고 GC가 메모리를 해제 할 수 있도록 하는 것이다
- 이외에 개발자가 직접 정의한 경우는 API 문서를 봐야 어떤 역햘을 하는지 알 수 있다
- 또한, 명시적으로 수거가 되도록 표시하는 경우가 있다
- 개발자가 직접 정의한 경우를 제외한 close() 메소드는 Object의 사용 중지를 알리는 역할이고
- 이것의 메모리를 해제해주는 역할은 GC가 하는 것이다
'Java' 카테고리의 다른 글
Java에서 String이 메모리에 생성되는 과정의 이해 (0) | 2022.01.06 |
---|---|
Java 참조 타입 (0) | 2022.01.06 |
Java 조건문과 반복문 (0) | 2022.01.05 |
Java의 변수, 타입, 연산자 (0) | 2022.01.05 |
Java 특징 (0) | 2022.01.03 |