: Java에서 메모리를 자동으로 관리하는 기능입니다.
Java에서는 개발자가 명시적으로 메모리를 해제하는 free()와 같은 함수가 없습니다.
대신, GC가 동작하여 더 이상 사용하지 않는 객체를 메모리에서 제거합니다.
이를 통해 "메모리 누수와 같은 문제를 예방"할 수 있습니다.
JVM은 메모리를 Heap과 Stack 두 가지로 나누어 관리합니다.
Heap 영역은 객체가 생성되는 곳이며,
Stack 영역은 메소드 호출과 관련된 데이터를 저장하는 곳입니다.
GC는 Heap 영역에서 사용하지 않는 객체를 탐색하여, 해당 객체의 메모리를 해제합니다.
GC의 동작은 크게 Mark, Sweep, Compact 단계로 나눌 수 있습니다.
Mark 단계에서는 GC가 사용 중인 객체를 찾아서 마킹합니다.
Sweep 단계에서는 마킹되지 않은 객체를 Heap에서 제거합니다.
Compact 단계에서는 제거된 객체로 인해 생긴 메모리 공간을 조정하여 다시 사용할 수 있는 형태로 만듭니다.
GC는 애플리케이션 성능에 영향을 미칠 수 있습니다.
GC가 동작하는 동안에는 애플리케이션이 일시적으로 멈출 수 있습니다.
따라서, GC의 동작 방식과 영향을 최소화하는 방법을 고려하여 애플리케이션을 개발하는 것이 중요합니다.