본문 바로가기

java

GabageCollector

JAVA GarageColletor


 - Serial GC

  - 단일 처리 

  - 단일 처리 할때 사용되는 gc

  - Young Generation은 Generation 알고리즘을 사용 하고 Old Generation 은 Mark-and-Compaction 알고리즘 사용


 - Paralle GC

  - 병렬로 처리 

  - Young Generation은 Generation알고리즘을 사용하고 Young Generation만 병렬로 처리 

  - Paralle Copy Algorithm

   - Generation Algorithm과 동일 하지만  Eden 영역에서 Survivor 영역으로 Copy될때 병렬로 처리 된다.

   - 병렬로 처리 될때 같은 동일한 스레드가 같은 객체를 참조하면 Curruption이 발생한다. Curruption을 우회하려면 동기화 해야 한다.

     PLAB방식 (Pallalle Local Allocation Buffer) : 객체가 할당될때 공간에 여유를 두는 방식 


 

 - CMS GC

  - young generaton은 Parallel Copy Alorithm 사용

  - Old generationd은 Conccurent Mark And Sweep Algorithm 사용

    initial phase : 

     - 살아있는 객체가 있는지 판별하는 단계

     - single thread로 작업

    concurrent mark phase : 

      - 살아있는 객체가 있으면 살아있는 객체를 대상으로 다시 추적하여 mark 하는 단계

      - 운영중인 thread는 멈추지 않고 작업을 진행하면서 mark 함.

      - single thread

    remark phase : 

      - mark된 객체를 위주로 참조가 업데이트 되었는지 또는 살아있는 객체가 있는지 모든 스레드가 판별하게 됨

   conccurent sweep phase : 

     - 객체를 sweep하는 단계

     - compaction을 하지 않음

장점으로는 빠른 속도의 gc가 발생하므로 수행시간이 짧다. 반면에 compation 문제가 있어서 단편화가 발생할 수 도 잇다. 또한 다른 gc보다 cpu를 많이 사용한다.



 - G1 GC

  - 기존의 물리적으로 Yong Generation과 Old Generation을 구분 했던것을 개념적으로 구분하고 레진 단위 로 처리

  - 하나의 레진단위로 되어있고 1byte정도의 레진을 가짐

  - 각각의 사용하지 않는 레진 단위로만 gc를 수행하기 때문에 suspend 현상이 짧음


g1 알고리즘

  young generation(Evaucation Phase) : 

   - Rechable Object를 판별하여 age가 안되는 Region은 Survivor 영역으로 Copy하고 Promotion대상이 되는 Region은 Old Generation으로 Copy

   - 나머지 Copy가 안된 Region은 gc한다.

   - 병렬로 수행

  Conccruent Mark Phase

   - Makr 단계와 Remark 단계로 나뉨

     -mark : Evacuation 에서 변경된 객체 대상으로 객체를 판별하여 making하는 단계

     - remark  : 각 Resion 객체마다 Desity(밀도)를계산, gabarge는 다음 단계로 넘어가지 않고 바로 gc                           

  Old Reclaim Phase

    - gc를 위히 live object 비중이 낮은 

  Comaption Phase

   - 압축 작업을진행




'java' 카테고리의 다른 글

Java HashMap동작 원리  (0) 2017.10.16
ClassLoader  (0) 2017.10.14
GarbageCollection  (0) 2017.10.13
String StringBuider SttringBuffer 차이  (0) 2017.10.13
예외  (0) 2017.10.12