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

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

f-lab_java

목록 보기
49/73

GC 선택 기준

필수 기준

  1. Throughput, 처리량 : 애플리케이션 런타임 시간과 메모리 할당 및 가비지 수집에 소요된 총 시간의 비율
    ex) 처리량이 95%라면 애플리케이션 코드가 95%의 시간 동안 실행되고 가비지 수집이 5%의 시간 동안 실행된다는 의미
  2. Latency : 가비지 수집 일시 중지로 인해 영향을 받는 애플리케이션 응답 시간
  3. Footprint : The working set of a process, measured in pages and cache lines. ?

GC 선택 예시)

  • 높은 처리량이 필요한 애플리케이션이라면 Latency 를 감안할 수 있다
  • 높은 응답이 필요한 애플리케이션이라면 Latency 를 우선으로 해야한다.

GC 종류

Serial 수집기

  • 단일 스레드에서 GC 수행한다.
  • heap 크기가 작은 애플리케이션에 적합하다.
  • 세대별 수집기다.

Parallel 수집기

  • *throughput collector 라고도 한다.*
  • STW 시간이 상대적으로 길어도 괜찮은 경우 처리량을 높이기 위해 선택하면 적합하다. ex) bulk data processing, batch jobs
  • 세대별 수집기다.
  • Serial 수집기와 차이점은 GC 가 여러 스레드에서 병렬로 작동한다.
의문)
병렬 수집기는 왜 STW 가 길어질 수 있는 것인가?

CMS (deprecate)

  • JDK9 에서 deprecate 됌
  • 짧은 STW 이 필요한 애플리케이션에 적합하다.
  • old generation 의 객체들이 오래 생존하는 경우에 장점을 발휘한다.
  • 할당률이 더 빨라

Garbage-first (G1) collector

  • 큰 메모리를 사용하는 멀티프로세서 머신을 위해 고안된 server-style collector 라고도 한다.
  • 짧은 STW 로 높은 처리량을 자랑한다.
  • JDK 9 부터 디폴트 GC 로 선택되었다.
  • *mostly concurrent collector 라고도 한다.*
  • a regionalized and generational garbage collector 라고도 한다.
    • regionalized : 메모리를 동일한 사이즈의 region 으로 나눈다.
      • 1MB ~ 32MB
    • Eden, survivor, and old generations 은 region 의 논리적 집합이다.
    • 이 논리적 집합의 region 들이 연속적으로 배치되지 않아도 된다.
  • 아래 기준 중 하나 이상을 충족하면 G1 GC 로 높은 처리량과 짧은 대기 시간을 달성할 수 있다.
    • Large heap size: 특히 heap 크기 6GB 이상이며 50%가 live objects 일 경우
    • 세대별 할당률과 승격 비율이 크게 변하는 경우
    • 힙에 많은 양의 파편화가 발생하는 경우
    • 일시 중지를 수백 밀리초로 제한해야 하는 경우

Compaction 에 STW 가 필요한 이유

  • move object
  • update references to it


컴퓨터 구조를 학습해야 하는 이유

  1. 문제해결 능력 향상
  2. 성능/용량/비용을 고려하면 개발할 수 있다.

컴퓨터 구조 지식

  1. 컴퓨터가 이해하는 정보
  2. 컴퓨터의 네 가지 핵심 부품

컴퓨터가 이해하는 정보

  • 컴퓨터는 0,1 로 표현된 정보만을 이해한다.
  • 정보는 크게 데이터와 명령어로 구분한다.

컴퓨터 핵심 부품

  1. CPU
  2. 메모리(주기억장치)
  3. 보조기억장치
  4. 입출력장치

  • 메모리
    현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 프로그램이 실행되려면 반드시 메모리에 저장되어있어야 한다.

    • 컴퓨터가 빠르게 작동하기 위해서는 메모리 속 명령어와 데이터가 중구난방으로 저장되어 있으면 안 된다.
    • 저장된 명령어와 데이터의 위치는 정돈되어 있어야 한다.
    • 저장된 데이터에 접근할 때 주소(address)라는 개념이 사용된다.

  • CPU
    컴퓨터의 두뇌. 메모리에 저장된 명령어를 읽어 들이고, 읽어 드린 명령어를 해석하고 실행하는 부품
    - ARU(Arithmetic Login Unit) 산술논리연산장치
    계산기.
    - 레지스터
    임시 저장 장치
    - CU(control unit) 제어장치
    제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치

  • 보조기억장치
    비휘발성 저장 장치

  • 입출력장치
    컴퓨터 내부와 정보를 교환하는 장치

  • 메인보드와 시스템버스
    컴퓨터 핵심 부품들은 모두 메인보드라는 판에 연결된다.
    마더보드라고도 부른다.

    • 버스(bus) : 메인보드에 연결된 부품들은 서로 정보를 주고 받을 수 있는데, 메인보드 내부에 버스라는 통로로 서로 정보를 주고 받는다.
    • 시스템 버스 : 네 가지 핵심 부품을 연결하는 가장 중요한 버스
      - 구성 : 주소 버스, 데이터 버스, 제어 버스

용어 정의

  • 데이터:
    컴퓨터가 이해하는 숫자, 문자, 이미지와 같은 정적인 정보
  • 명령어
    데이터를 움직이고 컴퓨터를 작동시키는 정보
  • 주소
    데이터가 저장된 메모리의 위치

0개의 댓글