ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가비지 컬렉션(Garbage Collection)???
    Java 2018. 7. 12. 18:52
    반응형







    자바 공부하면서, 앞에서도 메모리 구조 정리하면서 가비지, 가비지 이야기가 많은데,,

    정확히 어떤 동작을 하는지, 어떤 것을 처리하는지 몰라서 찾아보았습니다.




    1. 가비지 컬렉션 (Garbage Collection)?

      - 가비지 컬렉터는 힙 메모리를 다룹니다. 

      - 가비지 컬렉터 (Garbage Collector) 는 힙 내의 Garbage를 찾아내고 처리해서 힙의 메모리를 회수한다.

      - reachability라는 개념을 사용하여 객체의 유효한 참조가 있으면 reachability, unreachability로 Garbage를 판단한다. 

     New / Young Generation

    Tenured Generation 

    Permanent Generation 

    Eden 

     Survivor 0

     Old

     Permanent

     Survivor 1




      1) Minor GC ( Young 영역에서 발생하는 GC(Garbage Collector) ) 

        - 새로 생성된 객체는 Eden 영역에 위치한다. 

        - Eden 영역에 데이터가 어느 정도 쌓이면, Survivor 영역으로 옮겨지거나 삭제됩니다. 

          * Survivor 영역 사이에는 우선 순위가 있는 것은 아니나 두 개의 영역 중 한 영역은 반드시 비어 있어야 합니다.

        - Eden영역과 Survivor 둘 중 하나의 영역이 꽉 찬다면 비어있는 Survivor영역으로 이동되고, Young영역에 공간이 남아있지 않으면, Old영역으로 이동한다.

           * 스레드 로컬 할당 버퍼(Thread-Local Allocation Buffers) : 각 스레드별 메모리 버퍼를 사용하여 다른 스레드에 영향을 주지 않고 작업을 한다.

              ⓛ Eden 내에 있는 한 영역

              ② Thread 마다 할당되는 객체 버퍼

              ③ 각 Thread 마다 Thread-Local에 할당되므로, 동기화에 신경쓰지 않아도 된다.

              ④ TLAB 밖에 할당된 객체들은 Thread 동기화 등여러가지 절차가 추가적으로 필요하기 때문에 처리하는데 느리다.




       2) Major GC ( Old 영역이나 Permanent 영역에서 발생하는 GC(Garbage Collector) )

         - Old 영역에서 참조되지 않은 객체들을 한꺼번에 삭제한다. 

         - Major GC가 발생하면 GC를 실행하는 Thread를 제외하고 나머지 Thread는 모두 작업을 멈추고, GC작업이 끝난 뒤 Thread가 다시 작업을 시작한다.







    2. Gabage Collector 방식

      1) Serial Collector

            - Young영역과 Old영역이 Serial 하게 처리되며 하나의 CPU를 사용합니다.

            - 일반적으로 클라이언트 종류의 장비에서 많이 사용됩니다.



      2) Parallel Collector

            - Young영역에서 Serial Collector 와 달리 병렬로 처리합니다. 



      3) Parallel Compacting Collector

            - Old영역에서 Mark, Sweep, Compact 3단계로 GC를 거칩니다.

            - CPU를 사용하는 서버에 적합합니다.



      4) Concurrent Mark-Sweep Collector

            - Old영역에서 Mark, Sweep, Remark, Concurrent Sweep 4단계로 GC를 거칩니다.

            - 2개 이상의 프로세서를 사용하는 웹서버에 적합합니다.

           




      

    반응형
Designed by Tistory.