GC

    [Java] 가비지 컬렉션(GC, Garbage Collection) 기초

    [Java] 가비지 컬렉션(GC, Garbage Collection) 기초

    시스템에 있는 모든 객체의 수명을 정확히 몰라도 런타임이 대신 객체를 추적하며 쓸모없는 객체를 알아서 제거하는 것 GC의 2가지 기본 원칙 알고리즘은 반드시 모든 가비지를 수집해야 한다. 살아 있는 객체는 절대로 수집해선 안된다. 2번째 원칙이 더 중요하다. 살아 있는 객체를 수집했다간 세그먼트 폴트가 발생하거나 프로그램 데이터가 나도 모르게 변형될 것이다. 따라서 GC 알고리즘은 프로그램이 사용 중인 객체를 절대 수집해선 안된다. STW(Stop-The-World) GC가 실행되어 힙의 메모리를 반환하는 동안에는 GC에 할당된 스레드를 제외한 모든 스레드가 멈추게 된다. 이러한 상태를 Stop the World라고 하고 어떠한 GC 알고리즘을 사용하더라도 STW 상태에 부딪히게 된다. 따라서 GC 튜닝..