garbage collection 2

Java의 Garbage Collection

개요 자바의 메모리 관리 방법입니다. 자바의 객체는 Runtime Data Areas의 Heap에 할당됩니다. JVM의 Heap Area 자바는 개발자가 메모리를 관리하지 않습니다. Garbage Collector가 객체의 메모리를 해제합니다. GC가 수행될 때, GC를 위한 스레드를 제외하고 모든 스레드의 작업이 중지됩니다(Stop the World). GC 튜닝은 Stop the World의 시간을 줄이는 것입니다. 가설 : Weak Generational Hypothesis 대부분의 객체는 금방 접근 불가능 상태(unreachable)가 됩니다. 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재합니다. GC 대부분의 객체는 Young 영역에서 GC(Minor GC)됩니다. Young 영역의 GC..

JVM의 Heap Area

개요 JVM의 Runtime Data Areas에서 Heap은 객체를 저장합니다. 객체에 대한 참조 변수는 Stack에 있습니다. Oracle의 Hotspot VM의 Heap 구조 Young Generation Eden 객체가 최초로 할당되는 장소 Eden이 포화상태이면 참조중인 모든 객체를 Survior로 옮깁니다. Survivor로 참조중인 객체가 모두 옮겨지면 Garbage Collection(Minor GC) 수행합니다. Survivor Survivor 1, Survivor 2로 이뤄져 있습니다. 참조중인 객체들은 하나의 Survivor 영역만 사용합니다. Old Generation Survivor 에서 오랫동안 참조되고 있는 객체는 Tenured로 이동합니다. Tenured에 온 객체는 앞으로도..