GC 선택 기준
필수 기준
- Throughput, 처리량 : 애플리케이션 런타임 시간과 메모리 할당 및 가비지 수집에 소요된 총 시간의 비율
ex) 처리량이 95%라면 애플리케이션 코드가 95%의 시간 동안 실행되고 가비지 수집이 5%의 시간 동안 실행된다는 의미
- Latency : 가비지 수집 일시 중지로 인해 영향을 받는 애플리케이션 응답 시간
- 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 로 선택되었다.
- a *mostly concurrent collector 라고도 한다.*
- a regionalized and generational garbage collector 라고도 한다.
regionalized
: 메모리를 동일한 사이즈의 region 으로 나눈다.
- 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
컴퓨터 구조를 학습해야 하는 이유
- 문제해결 능력 향상
- 성능/용량/비용을 고려하면 개발할 수 있다.
컴퓨터 구조 지식
- 컴퓨터가 이해하는 정보
- 컴퓨터의 네 가지 핵심 부품
컴퓨터가 이해하는 정보
- 컴퓨터는 0,1 로 표현된 정보만을 이해한다.
- 정보는 크게 데이터와 명령어로 구분한다.
컴퓨터 핵심 부품
- CPU
- 메모리(주기억장치)
- 보조기억장치
- 입출력장치
-
메모리
현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 프로그램이 실행되려면 반드시 메모리에 저장되어있어야 한다.
- 컴퓨터가 빠르게 작동하기 위해서는 메모리 속 명령어와 데이터가 중구난방으로 저장되어 있으면 안 된다.
- 저장된 명령어와 데이터의 위치는 정돈되어 있어야 한다.
- 저장된 데이터에 접근할 때 주소(address)라는 개념이 사용된다.
-
CPU
컴퓨터의 두뇌. 메모리에 저장된 명령어를 읽어 들이고, 읽어 드린 명령어를 해석하고 실행하는 부품
- ARU(Arithmetic Login Unit) 산술논리연산장치
계산기.
- 레지스터
임시 저장 장치
- CU(control unit) 제어장치
제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치
-
보조기억장치
비휘발성 저장 장치
-
입출력장치
컴퓨터 내부와 정보를 교환하는 장치
-
메인보드와 시스템버스
컴퓨터 핵심 부품들은 모두 메인보드라는 판에 연결된다.
마더보드라고도 부른다.
- 버스(bus) : 메인보드에 연결된 부품들은 서로 정보를 주고 받을 수 있는데, 메인보드 내부에 버스라는 통로로 서로 정보를 주고 받는다.
- 시스템 버스 : 네 가지 핵심 부품을 연결하는 가장 중요한 버스
- 구성 : 주소 버스, 데이터 버스, 제어 버스
용어 정의
- 데이터:
컴퓨터가 이해하는 숫자, 문자, 이미지와 같은 정적인 정보
- 명령어
데이터를 움직이고 컴퓨터를 작동시키는 정보
- 주소
데이터가 저장된 메모리의 위치