[F-Lab 챌린지 56일차 TIL]

성수데브리·2023년 8월 22일
0

f-lab_java

목록 보기
46/73

Collector 종류

  1. serial collector

    싱글 스레드에서 동작하는 GC

parallel collector, 병렬 수집기

  • 장점
    1. 처리율에 최적화
    2. 가용 CPU 코어를 총동원해 가능한 한 재빨리 메모리를 mark/sweep
    3. STW 중단 시간을 조금이라도 단축해 가비지를 효율적으로 수집하겠다는 의도
  • 단점
    1. 영 GC, 풀 GC 모두 풀 STW 를 일으킨다.
    2. 영역 내 살아 있는 객체 수만큼 마킹 시간도 늘어난다.
    3. STW 시간이 힙 크기에 거의 비례한다. → 힙이 계속 커질수록 STW 시간도 길어진다.
  • 종류
    1. Parallel GC
      • 영 세대용 병렬 수집기
      • Young GC 언제 발생?
        • 스레드가 에덴에 객체를 할당하려는데 TLAB 공간이 부족하고, JVM 도 새로운 TLAB 를 할당할 수 없을 때 발생한다.
        • TLAB 가 없다는 것은 다른 스레드도 같은 상황이 발생한다는 것이기에 STW 발동
    2. Parallel Old GC
      • 올드 세대용 병렬 수집기
      • Parallel GC 와 차이점 : 반구형 수집기가 아닌 하나의 연속된 메모리 공간에서 압착하는 수집기
      • 동작 : Old 세대 영역에 더 이상 공간이 없으면 올드 세대 내부에서 객체들을 재배치해서
        늙은 객체가 죽고 빠져 버려진 공간을 회수한다.
      • 장점
        1. 메모리 사용 면에서 아주 효율적, 메모리 단편화 방지

concurrent collector

  • 목적 : STW 는 언제 발생하는지 예측할 수 없다. 최신 GC 이론은 불확정적 STW 중단 문제를 해결하고자 한다.
  • 종류
    • CMS
      • 중단 시간을 아주 짧게 하려고 설계된, 올드 영역 전용 수집기다.
      • 어플리케이션 스레드와 GC 스레드가 동시에 동작한다.
      • STW 는 mark/re-mark 시에만 발생한다. → 한 차례 긴 STW 중단을 매우 짧은 두 차례 STW 로 대체한 셈이다.
      • 초기 마킹의 목적
        • 해당 영역 내부에 위치한 확실한 GC 출발점을 얻는 것이다.
      • 동시 마킹 목적
        • 재마킹 단계에서 가능한 한 STW 시간을 줄이는 것
    • 단점
      • compaction 을 하지 않으므로 올드 영역이 단편화될 수 있다.
      • GC 수행에 훨씬 더 많은 CPU 시간이 필요하다. → ?
      • GC가 객체를 추적해야 하므로 메모리를 더 쓴다 → ?
    • 작동 원리
      • 가용 스레드 절반을 동원해 GC 동시 단계를 수행하고, 나머지 절반은 자바 코드를 실행한다.
      • CMS 도중에 에덴 공간이 꽉 찬다면?
        • CMS 도중 영 GC 가 일어난다.
        • 영GC 는 코어 절반만 사용하므로 병렬 수집기의 영GC 보다 더 오래걸린다.
      • concurrent mode failure, 동시 모드 실패 : 할당률이 급증하면 영 수집 시 조기 승격이 일어난다. → 올드 영역 공간도 부족해 진다.
      • CMF 를 방지하려면 테뉴어드가 꽉 차기 전에 CMS가 수집 사이클을 개시해야한다.

G1

  • 목적
    • 세대 개념을 다른 관점에서 다시 생각해 설계한 수집기
    • 주목표는 중단 시간 단축
  • 특징
    • 세대 마다 경계가 뚜렷하지 않고, 연속된 메모리 공간이 없다.
    • GC 시 전체 영역을 탐색하지 않는다.
  • 힙 레이아웃 및 영역
    • 힙 영역은 Region 으로 구성된다.
    • Region 을 이용하면 세대를 불연속적으로 배치할 수 있고,
      수집기가 매번 실행될 때마다 전체 가비지를 수집할 필요가 없다.
  • 장점
    • CMS 보다 훨씬 튜닝하기 쉽다.

    • 조기 승격에 덜 취약하다.

    • 대용량 힙에서 중단 시간이 우수하다.

    • STW 시간이 짧다.

    • Compaction 을 사용한다.


용어 정리

Write Barrier

Write Barrier는 파일시스템의 메타데이터가 올바르게 기록되고 디스크에 제대로(심지어 디스크 전원이 나갈지라도) 반영되게 하기위한 커널 매커니즘

Manifest File

jar 파일의 메타데이터를 갖고있는 파일이다. key, value 쌍으로 정보를 명시한다.

  • Manifest-Version, Created-By, Multi-Release, Built-By
  • Entry Point and Classpath

메모리 릭

컴퓨터가 필요하지 않은 메모리를 계속 점유하면서 더 이상 사용 가능한 메모리가 없어지는 현상

메모리 단편화

메모리 공간이 작은 조각 공간으로 나뉘게 될 경우, 사용 가능한 메모리가 충분함에도 불구하고 메모리 할당이 불가능한 상태

오버헤드

어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리

예를 들어 A라는 처리를 단순하게 실행한다면 10초 걸리는데,
안전성을 고려하고 부가적인 B라는 처리를 추가한 결과 처리시간이 15초 걸렸다면,
오버헤드는 5초가 된다.
또한 이 처리 B를 개선해 B'라는 처리를 한 결과,
처리시간이 12초가 되었다면, 이 경우 오버헤드가 3초 단축되었다고 말한다>


트랜잭션

  • 작업의 완전성 보장
  • 데이터의 정합성 보장
  • 논리적인 작업 셋을 모두 완벽하게 처리하고나, 실패하면 모두 원 상태로 복구해서 부분 성공이나 부분 실패를 방지하는 기능

잠금

  • 동시성 제어하기 위한 기능
  • 하나의 레코드에 동시에 여러 트랜잭션이 접근할 때 제어 기능을 제공한다.

0개의 댓글