Java GC (Garbage Collection)

참코딩·2024년 12월 2일

목표

Garbage Collection 의 정의와 작동 방식에 대한 이해

GC

GC는 프로그램에서 더 이상 사용되지 않는 객체(또는 메모리)를 식별하고 이를 자동으로 회수하여 Heap 메모리를 효율적으로 사용하는 것을 목적으로 한다.

힙 메모리에서 객체가 해제되는 조건은 아래와 같고,

  • 더 이상 참조되지 않는 객체이거나
  • 참조가 순환되더라도 접근할 수 없는 객체

Java에서 명시적으로 객체를 해제할 수는 없지만, GC를 돕기 위해선 다음과 같은 방법들이 있다.

  • 객체 참조를 null로 설정
MyClass obj = new MyClass();
obj = null; // obj는 이제 참조되지 않음
  • 작은 범위에서 객체 사용
public void someMethod() {
    MyClass temp = new MyClass();
    // temp는 메서드가 끝나면 GC 대상이 됨
}
  • GC 호출 요청 (그러나 GC 실행은 JVM에 의해 결정되며, 요청한다고 바로 실행되는 것은 아니라고 한다)
System.gc();
  • 약한 참조 사용(Weak References)
WeakReference<MyClass> weakRef = new WeakReference<>(new MyClass());

Java는 프로그램 코드에서 메모리를 명시적으로 지정하여 해제하지 않고, 이 때문에 가비지 컬렉터(Garbage Collector)가 더 이상 필요 없는 (쓰레기) 객체를 찾아 지우는 작업을 해줘야 한다.

Garbage Collector

가비지 컬렉터(Garbage Collector)는 JVM의 런타임 환경에 내장되어 있으며, 다양한 종류의 GC 알고리즘이 존재한다.

HotSpot JVM을 기준으로 GC(Garbage Collection)은 Heap 메모리를 최적으로 관리하기 위해 내부적으로 공간을 구분하여 데이터를 관리한다.

GC1

출처

profile
백엔드 개발자 입니다.

0개의 댓글