Java GC (Garbage Collection)

  • GC : 
    • GC는 Heap memory에 상주하는 인스턴스중에 Reference counter = 0 인 것을 메모리에서 제거하는 행위. 
    • GC가 종료될때까지 모든 서비스 스레드가 정지
    • Reference counter = 0인 인스턴스가 곧바로 메모리에서 삭제되는 것은 아니며, GC가 동작하면 삭제됨.
  • 동작
    • 모든 인스턴스는 최초 Eden영역에 존재
    • GC에 의해서 제거되지 않은, 즉 Reference counter > 0 인 인스턴스는 Young(Eden, Survivor)를 거쳐 Old(Tenured)로 이동
    • Minor GC
      • Eden이 Full일 경우에 발생
      • Young 영역에 Counter가 0인 모든 인스턴스 제거
      • Eden 영역에 Counter가 0보다 큰 인스턴스는 Survivor로 이동
    • Major GC
      • Young(Eden+Survivor)이 Full일 경우 발생함
      • Old영역의 Counter가 0인 인스턴스 모두 제거
      • Survivor영역의 Counter가 0보다 큰 인스턴스를 Old영역으로 이동
  • GC와 Heap 크기의 역학관계?
    • Heap의 크기가 커질지면
      • 처리량 증가(Full GC가 덜 발생함)
      • But, Pause time도 따라서 증가(Full GC 수행시 시간이 길어짐)




'감리사 > 소프트웨어공학' 카테고리의 다른 글

[SE] 테스트 커버리지  (0) 2018.07.17
[SE] 테스트 용어(종류)  (0) 2018.07.13
[SE] Java - J2ME  (0) 2018.07.11
[SE] XML - 작성 규칙  (0) 2018.07.11
[SE] 객체지향 개발 5대 원칙 (SOLID)  (0) 2018.07.10