young generation

    [JVM Garbage Collector] G1 GC 는 왜 효율적인가?

    Java 9 이전의 GC 이전 글에서 GC가 어떻게 일어나는지를 살펴보았다. 이전 글에서 살펴본 GC는 모든 메모리를 랜덤으로 찾아보면서 Memory 상의 객체들 중 Reference(Mark)되지 않은 객체를 GC하며 GC를 할 때마다 살아남은 객체들은 eden -> survivor0 -> survivor1 -> old 영역으로 순서대로 시킨다. G1 GC의 효율성 Region 으로 나누어 제거 Java9+ 부터 기본 GC로 자리잡은 G1 GC에서는 이전의 GC들처럼 일일히 메모리를 탐색해 객체들을 제거하지 않는다. 대신 메모리가 많이 차있는 영역(region)을 인식하는 기능을 통해 메모리가 많이 차있는 영역을 우선적으로 GC 한다. 즉, G1 GC는 Heap Memory 전체를 탐색하는 것이 아닌 ..

    JVM에서 Garbage Collection(GC) 이 일어나는 방식 알아보기

    JVM에서 Garbage Collection이 중요한 이유 JVM은 자동으로 메모리를 관리해주기 때문에 GC(Garbage Collection)가 성능상 매우 중요하다. 모든 머신들이 그렇듯 JVM 또한 사용되지 않는 객체들이 제때 메모리에서 정리되지 못하고 한 번에 정리되거나 한다면 앱이 버벅거리거나, 제대로 동작하지 않을 수 있다. 또한 만약 사용되지 않는 객체가 GC의 대상이 되지 못한다면 Out of Memory Error 로 인해 앱이 강제 종료될 수도 있다. 여기서 말하는 Memory는 Heap 영역이다. Stack 영역은 포인터만 저장하는 비교적으로 가벼운 저장 공간이기 때문에 성능 상 큰 이슈가 발생할 가능성이 적다. GC가 일어나는 방식과 Heap Memory JVM은 Heap 메모리 관..