SeouliteLab

[Java] 가비지 컬렉션(Garbage Collection) 본문

프로그래밍

[Java] 가비지 컬렉션(Garbage Collection)

Seoulite Lab 2024. 2. 27. 17:14

Java에서의 가비지 컬렉션(Garbage Collection)은 자동으로 메모리 관리를 수행하여 사용하지 않는 객체를 자동으로 해제하는 기능이다. 이를 통해 메모리 누수를 방지하고 프로그램의 안정성과 성능을 향상시킨다.

가비지 컬렉션의 주요 동작은 다음과 같다:

  1. 참조 추적(Reference Tracking):
    • 가비지 컬렉션은 먼저 모든 객체 간의 참조를 추적한다. 이를 통해 어떤 객체가 아직 참조되고 있는지를 확인한다.
  2. 불필요한 객체 식별:
    • 참조 추적을 통해 더 이상 참조되지 않는 객체인 "가비지"를 식별한다. 이는 주로 참조되지 않는 객체에 대한 모든 참조가 제거되었을 때 발생한다.
  3. 메모리 해제:
    • 가비지로 식별된 객체의 메모리를 해제한다. 이를 통해 해당 객체가 차지하던 메모리 공간이 반환되어 다른 객체가 사용할 수 있게 된다.

Java에서는 가비지 컬렉션을 자동으로 수행하며, 개발자는 명시적으로 메모리를 해제할 필요가 없다. 다만, 객체가 더 이상 필요하지 않을 때 해당 객체에 대한 모든 참조를 제거하는 것이 중요하다. 이는 메모리 누수를 방지하고 가비지 컬렉션의 효율성을 향상시킨다.

예제 코드는 다음과 같다.

public class GarbageCollectionExample {
    public static void main(String[] args) {
        // 객체 생성
        MyClass obj = new MyClass();
        
        // 객체 사용
        
        // 참조 제거
        obj = null;
        
        // 가비지 컬렉션 수행됨
    }
}

class MyClass {
    // 필드와 메서드 정의
}

위의 코드에서 obj는 객체를 참조하고 있지만, 이후에 null로 설정하여 해당 객체에 대한 참조를 제거합니다. 이후에 JVM이 가비지 컬렉션을 수행하여 해당 객체를 해제한다.

가비지 컬렉션은 Java의 강력한 기능 중 하나로서, 메모리 관리를 단순화하고 프로그램의 안정성을 높여준다.