본문 바로가기

java(자바)

[java(자바)] 가비지 컬렉션(Garbage Collection)이란? _디버깅의 눈물

가비지 컬렉션(Garbage Collection)

: JVM의 Heap 영역에서 '동적으로 할당했던 메모리 영역 중, 더 이상 사용하지 않는 메모리를 주기적으로 삭제하는 프로세스'를 말합니다.

 

가비지 컬렉션의 장점

: 개발자가 메모리 관리를 직접 하지 않아도 자동적으로 메모리 누수를 방지합니다.

 

가비지 컬렉션의 단점

: 개발자는 메모리가 정확히 언제 해제되는지 알 수 없습니다.

: 가비지 컬렉션이 작동하는 동안에는 JVM이 애플리케이션 실행을 일시적으로  멈추는 오버헤드(Stop the world)가 발생합니다.

 

가비지 컬렉션의 일반적인 과정

1. Marking

: JVM은 Heap 메모리 내에서 사용 중인 모든 객체를 표시합니다. 더 이상 사용되지 않는 객체는 표시되지 않습니다.

 

2. Sweeping

: JVM은 표시되지 않는 객체를 삭제합니다.

 

3. Compacting

: JVM은 Heap 메모리 내에서 객체를 이동시켜 빈 공간을 채웁니다. 이 단계는 삭제된 객체로 인해 생긴 빈 공간을 메우기 위해 수행됩니다.