가비지 컬렉션이란 무엇일까?

0️⃣1️⃣·2021년 5월 2일
0

가비지 컬렉션이란?

  • 자바에서 사용되고 있지 않은 할당된 메모리들을 자동으로 해제해주는 기능

  • GC을 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것(Stop the world)

Stop The World란?

  • GC를 수행하기 위해, GC를 실행하는 스레드 이외에 다른 스레드들은 모두 작업을 멈춘다.

가비지 컬렉션의 대상들은 어디에 있을까?

  • 동적 할당된 메모리들이 대상

  • 자바에서 동적 할당 명령어인 new를 통해서 만들어진 메모리 공간을 의미

가비지 컬렉션에는 무슨 종류가 있을까?

  • Minor GC와 Young Generation에 관여하며, Major GC가 Old Generation에 관여

  • Young Generation / Old Generation의 차이는 처음 할당된 메모리가 Young에 있다가, Aging에 의해서 일정 기준이 넘어가면, Old Generation으로 이동

Minor GC와 Major GC중 뭐가 더 복잡할까?

  • Old Generation의 메모리 공간이 훨씬 크다, 메모리 공간이 클수록 검사 대상도 증가

  • 따라서, Major GC가 더 복잡

  • Major GC의 방식에 따라서 가비지 컬렉터 종류가 나뉘게 된다.

가비지 컬렉터의 두 가지 가정이란?

  • 대부분의 객체는 금방 접근 불가능 상태(unreachable)가 된다.

  • 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재한다.

가비지 컬렉터 종류(Old GC를 처리하는 방식에 따라 분류)

  • Serial Collector : 싱글 스레드로 성능 한계 존재(Mark - Sweep - Compaction)

  • Parallel Collector : 멀티 스레드로 소요 시간을 감소시켜 성능 향상, CMS는 Stop The World 단축이 목적, Parallel 처리량 증가가 목적

  • CMS Collector(Concurrent Mask And Sweep) : 백그라운드에서 동작하여 Stop The World를 최소화, 응답속도가 빠를 필요가 있는 상황에서 사용, 백그라운드에서 동작하여 CPU 사용량이 증가하고, Compaction 과정이 자동으로 제공되지 않아 메모리 파편화가 발생, 메모리 파편화 해결을 위한 Compaction 과정이 Stop The World가 길어지게 만드는 문제 발생

  • G1 Collector : Region으로 영역을 나누며 Young과 Old 모두 될 수 있다, GC가 Region 단위로 발생, 영역들이 유연성있게 변경될 수 있으므로 공간 관리가 용이, Old 영역들도 한 개가 아니라 복수개의 영역들로 구성되므로 병렬 처리가 용이

0개의 댓글