Garbage Collection 의 정의와 작동 방식에 대한 이해
GC는 프로그램에서 더 이상 사용되지 않는 객체(또는 메모리)를 식별하고 이를 자동으로 회수하여 Heap 메모리를 효율적으로 사용하는 것을 목적으로 한다.
힙 메모리에서 객체가 해제되는 조건은 아래와 같고,
Java에서 명시적으로 객체를 해제할 수는 없지만, GC를 돕기 위해선 다음과 같은 방법들이 있다.
MyClass obj = new MyClass();
obj = null; // obj는 이제 참조되지 않음
public void someMethod() {
MyClass temp = new MyClass();
// temp는 메서드가 끝나면 GC 대상이 됨
}
System.gc();
WeakReference<MyClass> weakRef = new WeakReference<>(new MyClass());
Java는 프로그램 코드에서 메모리를 명시적으로 지정하여 해제하지 않고, 이 때문에 가비지 컬렉터(Garbage Collector)가 더 이상 필요 없는 (쓰레기) 객체를 찾아 지우는 작업을 해줘야 한다.
Garbage Collector
가비지 컬렉터(Garbage Collector)는 JVM의 런타임 환경에 내장되어 있으며, 다양한 종류의 GC 알고리즘이 존재한다.
HotSpot JVM을 기준으로 GC(Garbage Collection)은 Heap 메모리를 최적으로 관리하기 위해 내부적으로 공간을 구분하여 데이터를 관리한다.
