자바에는 Garbage Collector라는게 있어
프로그래머는 힙을 사용할 수 있는 만큼 자유롭게 사용하고
더 이상 사용되지 않는 오브젝트들은 Garbage Collector을 담당하는 프로세스가 자동으로 메모리에서
제거하도록 하는 것이 Garbage Collector의 기본 개념이다.
그런데 만약 Garbage Collector이 제때에 제 역할을 수행하지 못한다면 어떻게 될까?
Garbage Collector이 닫아줄때까지 계속 기다려야 하는가? 언제 닫아줄지 모르는데....
무인 호텔방으로 비유를 해보겠다
호텔에 100개의 방이 있는데 1번 방에 누군가 체크인을 하여 그 공간을 사용하고
체크 아웃을 하는것을 까먹고 나가버렸다, 이럴때에 다음 손님은 1번방에는 사람이 있으니 2번 방을
이용하게 될 것이고 이 상황이 계속 반복된다면 호텔에는 사용할 수 있는 방이 없게 되어버린다.
이걸 시스템으로 설명한다면
Stream을 쓸때에 공간을 할당한다 100개의 램에 공간이 있다면 1의 공간을 무조건 사용한다 치고
이걸 99번 돌려버린다면 100의 공간을 다 써서 메모리를 할당해줄수 없는 상황이 되어버린다
그래서 1의 공간을 쓰고 해제시켜줘야 한다.
close() 를 써야하는 곳에는 close를 쓰는것을 생활화 하자.
분명 close를 사용하게 만든 곳에는 개발자가 close를 사용해야 할 이유가 있어 close를 사용하게 해둔 것이다.
# 힙 영역(Heap memory)힙 영역은 모든 자바 클래스의 인스턴스(instance)와 배열(array)이 할당되는 곳으로, 런타임(run time) 데이터를 저장하는 영역이다. ... 힙 영역의 크기는 가비지 컬렉션의 전략에 따라 고정된 크기일수도 있고, 유동적으로 변경될 수도 있다.
'기능,개념 & 알고리즘 > 기능,개념' 카테고리의 다른 글
람다식(Lambda expression) 1. (0) | 2021.09.30 |
---|