기본 콘텐츠로 건너뛰기

8월, 2013의 게시물 표시

Java garbage collection애 대한 이해

Java heap management 자바의 메모리 관리는 garbage collection의 효율성을 높이기  위해 존재한다. 자바의 특징 중 하나는  JVM이 자동으로  메모리 관리를 하는 것이다. 정확히 말하자면 메모리 해제만을 자동으로 한다. 그리고 이 기능을 garbage collection이라고 한다. 그림 1. Layer of heap  그림 1에서 볼 수 있듯이,  heap 메모리 영역은 Eden과 Tenured로 크게 2 영역으로 나눠진다.   (Eden은 자유영역 정도로 볼 수 있다. Object의 생성/소멸이 자유롭게 또는 빈번하게 이뤄지는 영역이라는 뜻으로 볼 수 있다. Tenured는 종신 영역이라 번역할 수 있는데, object가 이곳에 들어가면 빠져 나올 수 없다고 이해하는 것이 쉽다. 실제로 이런 이름이 어울리는 이유는 생성/소멸의 빈도에 따라 object의 위치를 바꾸기 때문이다.) 그림 2. Heap에서의 object 이동   그림2를 보면 heap 에서의 object의 이동을 원리를 알 수 있다.