ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바의 GC 처리 방법
    자바 2023. 11. 23. 02:17

    java의 가비지 컬렉션 처리 방법

      • GC 작업을 수행하는 가비지 콜렉터가 하는 일
        1. 메모리 할당
        2. 사용 중인 메모리 인식
        3. 미사용 메모리 인식
      • Stop the World
        • 자바 애플리케이션은 GC 실행 시 GC 실행 스레드를 제외한 모든 스레드를 멈추고, GC 완료 후 다시 스레드들을 실행 상태로 변경
        • Stop the World는 모든 애플리케이션 스레드의 작업이 멈추는 상태
        • 어떤 GC 알고리즘을 사용하더라도, Stop the World는 불가피하며 최소화하기 위해 GC 튜닝을 진행java의 가비지 컬렉션(Garbage Collection) 처리 방법
      • 가비지 콜렉터가 들르는 메모리 영역은 Young 영역에 포함되는 Eden, Survivor1, Survivor2와 Old 영역 (Permanent 영역은 Java 1.8 부터 제거)
      • Young 영역에 있는 객체는 각 하위 영역이 가득 차면 Miner GC가 동작하여 더이상 참조되지 않는 객체 제거
      • Old 영역에 있는 객체는 영역이 가득 차면 Major GC(Full GC)가 동작하여 더이상 참조되지 않는 객체 제거
      • 동작 과정
        • 객체를 최초 생성하면 Young 영역 중 Eden 영역에 위치
        • Eden 영역에서 Miner GC 발생 시, 참조 중인 객체라면 Survivor1로 이동
        • Survivor1에서 Miner GC 발생 시, 참조 중인 객체라면 Survivor2로 이동
        • Survivor2에서 Miner GC 발생 시, 참조 중인 객체라면 다시 Survivor1 영역으로 이동 (Survivor1 <--> 2 반복)
        • Survivor 영역이 가득 차거나 Young 영역에서 오래 살아남은 객체는 Old 영역으로 이동
          • '오래'의 기준은 객체마다 age bit라는 것을 가지고 있는데 이는 Miner GC에서 살아남은 횟수를 기록하는 값
        • Old 영역에 있는 객체는 Major GC가 발생했을 때 참조 여부에 따라 공간이 유지되거나 제거

     

     

    728x90

    '자바' 카테고리의 다른 글

    자바는 Call by Value이다  (0) 2024.01.24
    Arrays.sort에 관한 간단한 고찰  (0) 2023.07.10
    Optional과 stream.filter  (0) 2023.03.10
    java.util.ConcurrentModificationException 에러  (0) 2023.02.23
    [Java] List to Array  (0) 2023.01.30

    댓글

Designed by Tistory.