Java - Garbage Collection

idkwhattodo·2022년 8월 29일
0

Java 개념

목록 보기
6/19
post-thumbnail

1. Garbage Collection?

  • 더 이상 사용하지 않는 객체를 청소하여 공간을 확보하는 JVM의 기능 중 하나
  • Java는 C나 C++과는 달리, 명시적으로 객체를 해제할 필요가 없음(JVM에서 GC 수행)
  • GC의 대상
    • 객체가 Null인 경우
    • 블럭 실행 종료 후, 블럭 안에서 생성된 객체
    • 부모 객체가 Null인 경우, 포함하는 자식 객체
  • GC 튜닝 : GC를 실행하기 위해 JVM이 어플리케이션 실행을 멈추게 되는데, 이러한 시간을 줄이도록 튜닝하는 것

2. Garbage Collection의 메모리 해제 과정

2-1. Marking

  • 프로세스가 마킹을 호출하고, GC는 메모리가 사용되는지 아닌지를 찾아냄

2-2. Normal Deletion

  • 참조되지 않는 객체를 제거하고, 메모리를 반환

2-3. Compacting

  • 퍼포먼스를 향상시키기 위해, 참조되지 않는 객체를 제거하고, 참조되어지는 객체를 묶어 공간을 만들어 새로운 메모리 할당 시에 더 빠른 진행이 되도록 함

3. Generation Gabage Collection

3-1. Young 영역

  • 새롭게 생성한 객체가 위치하는 영역
  • 대부분의 객체가 금방 접근 불가능 상태가 되기 때문에 많은 객체가 Young 영역에 생성됐다가 사라지며, 이 것을 Minor GC가 발생한다 함

3-2. Old 영역

  • 접근 불가능 상태로 되지 않아, Young 영역에서 살아남은 객체가 Old 영역으로 복사됨
  • 대부분 Young 영역보다 크게 할당하며, 크기가 큰 만큼 Young 영역보다 GC는 적게 발생
  • Old 영역에서 객체가 사라질 때 Major GC(Full GC)가 발생한다 함

3-3. Permanent 영역

  • Method Area라고도 하며, JVM이 클래스들과 메소드들을 설명하기 위한 메타 데이터를 포함하고 있음
profile
공부겅부

0개의 댓글