가비지 컬렉션, 컬렉터

김회민·2023년 2월 11일
0

Java

목록 보기
4/16

가비지 컬렉션이란?

GC: Garbage Collection, Collector

특징

  • Heap 영역동적으로 할당된 변수, 메소드, 클래스들 중 필요 없어진 것주기적으로, JVM이 알아서 삭제하는 프로세스
  • C, C++는 프로그래머가 수동으로 메모리 할당과 해제를 해줘야 하는 것과 차이가 있다.
  • 개발자 입장에서 메모리 관리나 누수 문제에 대해 신경을 덜 써도 되어 개발에만 집중할 수 있다는 장점이 있다.

단점

  • 개발자 입장에서 GC가 언제 발동되는지 정확하게 알 수 없다.
  • GC가 동작하는 동안에는 다른 동작이 멈추기( Stop the world ) 때문에 오버헤드가 발생한다.

원리

  • 객체들은 Heap 영역실질적으로 생성이 된다.
  • Method 영역과 Stack 영역에서는 생성된 객체의 주소를 저장한다.
  • 특정 이벤트가 발생하여 참조 변수가 삭제되면
    어디서도 참조 되고 있지 않은 객체 ( Unreachable )가 발생.
  • Unreachable 객체를 GC가 삭제한다.

Mark And Sweep 알고리즘

Mark
먼저 Root Area로부터 그래프 순회를 통해 연결된 객체들을 찾아내어 각각 어떤 객체를 참조하고 있는지 찾아서 마킹한다.

Sweep
참조하고 있지 않은 객체, 즉 Unreachable 객체들을 Heap에서 제거한다.

Compact
Sweep 후에 분산된 객체들을 Heap의 시작 주소로 모아 메모리가 할당된 부분과 그렇지 않은 부분으로 압축한다.

출저

[Java] 가비지 컬렉션(GC, Garbage Collection) 총정리

profile
백엔드 개발자 지망생

0개의 댓글