2. 자바 가비지 컬렉터

가비지 수집 알고리즘은 메모리 복구 방법론이며 가비지 수집기는 메모리 복구의 특정 구현입니다. 아래 그림은 7세대의 Collector를 나타낸 것으로, 두 Collector가 연결되어 있으면 같이 사용할 수 있다는 뜻입니다. 최고의 수집기와 같은 것은 없으며 우리가 선택해야 하는 것은 특정 응용 프로그램에 가장 적합한 수집기입니다.

1) 직렬 가비지 수집기(단일 스레드, 복사 알고리즘) -- 신세대는
    JDK1.3.1 이전의 신세대에서 유일한 가비지 수집기였던 복사 알고리즘을 사용하는 가장 기본적인 가비지 수집기입니다. Serial은 단일 스레드 수집기로서 가비지 수집을 완료하기 위해 하나의 CPU 또는 하나의 스레드를 사용할 뿐만 아니라 가비지 수집이 완료될 때까지 가비지 수집이 진행되는 동안 다른 모든 작업자 스레드를 일시 중단해야 합니다. 직렬 가비지 수집기는 가비지 수집 프로세스 중에 다른 모든 작업자 스레드를 일시 중단해야 하지만 간단하고 효율적입니다.제한된 단일 CPU 환경에서 스레드 상호 작용 오버헤드가 없으며 가장 높은 단일 스레드 가비지 수집 효율성을 얻을 수 있습니다. 따라서 직렬 가비지 수집기는 여전히 클라이언트 모드에서 실행되는 Java 가상 머신에 대한 기본 차세대 가비지 수집기입니다.

2) ParNew 가비지 수집기(직렬+멀티스레딩)--차세대
ParNew 수집기는 실제로 직렬 수집기의 다중 스레드 버전입니다. 서버 모드에서 실행되는 많은 가상 머신에서 선호하는 차세대 수집기 입니다. 수집기는 현재 CMS 수집기와만 작동할 수 있으므로 서버 모드에서 실행되는 많은 Java 가상 머신의 차세대 기본 가비지 수집기입니다.

가비지 수집을 위해 다중 스레딩을 사용하는 것 외에도 ParNew 가비지 수집기는 직렬 수집기와 정확히 동일하게 작동하며 ParNew 가비지 수집기는 가비지 수집 중에 다른 모든 작업자 스레드를 일시 중단합니다.

ParNew 수집기는 기본적으로 CPU 수와 동일한 수의 스레드를 열고 가비지 수집기의 스레드 수는 -XX:ParallelGCThreads 매개 변수로 제한할 수 있습니다. [병렬: 병렬]

3) 병렬 Scavenge 수집기(다중 스레드 복사 알고리즘, 고효율) -- 차세대

Parallel Scavenge 컬렉터는 차세대 가비지 컬렉터이기도 하며 복사 알고리즘을 사용하며 멀티 스레드 가비지 컬렉터이기도 합니다 제어 가능한 처리량을 달성하기 위해 프로그램에 중점을 둡니다(단, CPU가 사용자를 실행하는 데 사용되는 시간 코드 /CPU 총 소비 시간, 즉 처리량 = 실행 중인 사용자 코드 시간/(실행 중인 사용자 코드 시간 + 가비지 수집 시간)), 높은 처리량은 CPU 시간을 가장 효율적으로 사용할 수 있으며 프로그램의 계산 작업을 다음과 같이 완료할 수 있습니다. 많은 상호 작용이 필요하지 않고 백그라운드에서 작동하는 작업에 주로 적용됩니다. 적응형 조정 전략은 ParallelScavenge 수집기와 ParNew 수집기 간의 중요한 차이점이기도 합니다.

4) CMS 수집기(다중 스레드 마크 앤 스윕 알고리즘)

가장 짧은 수집 일시 중지 시간을 얻는 것이 목표인 수집기입니다. 장점: 동시 수집, 낮은 일시 중지 . "마크 앤 스윕(mark-and-sweep)" 알고리즘을 기반으로 합니다. 현재 Java 응용 프로그램의 대부분은 인터넷 웹 사이트 또는 B/S 시스템의 서버 측에 집중되어 있으며 이러한 유형의 응용 프로그램은 서비스의 응답 속도에 특히 주의를 기울이고 있습니다. 최단, 사용자에게 더 나은 경험을 제공하기 위해 CMS 수집기 이러한 응용 프로그램의 요구에 매우 적합합니다. 작동 프로세스는 더 복잡하며 4단계로 나뉩니다.

결점:

CPU 리소스에 매우 민감하며 동시성을 위해 설계된 프로그램은 CPU 리소스에 더 민감합니다. CMS 기본 재활용 스레드 번호: (CPU 번호+3)/4

플로팅 가비지를 처리할 수 없으면 "동시 모드 실패"가 실패하고 다른 Full GC가 발생할 수 있습니다. 동시 청소 단계에서 실행 중인 사용자 프로그램에서 생성된 가비지는 마킹 단계를 통과했으며 이 수집에서 정리할 수 없으며, 이를 부동 가비지라고 합니다. 기본적으로 CMS 수집기는 이전 세대 공간의 68%가 사용된 후에 활성화됩니다. 이전 세대가 매우 빠르게 성장하지 않는 경우 매개변수 -XX:CMSInitiatingOccupancyFraction을 적절하게 증가시켜 트리거 비율을 높일 수 있지만 너무 높으면 "동시 모드 실패" 실패로 이어지기 쉽습니다.

"마크 앤 스윕(mark-and-sweep)" 알고리즘을 기반으로 대량의 공간 파편이 생성됩니다 . 스위치 파라미터 -XX:+UseCMSCompactAtFullCollection은 Full GC 서비스 후 조각 모음 과정을 위해 제공되며, 메모리 조각 모음 과정은 동시에 진행될 수 없습니다. 그러나 일시 중지 시간이 길어집니다.

-XX:CMSFullGCsBeforeCompation은 압축하지 않은 전체 GC 수와 압축한 전체 GC 수를 설정합니다.

 5. G1 수집기(신세대와 구세대 모두 지원)

가비지 최초의 가비지 컬렉터는 가비지 컬렉터 이론의 발전에서 가장 최첨단의 성과입니다.CMS 컬렉터와 비교할 때 G1 컬렉터의 가장 두드러진 두 가지 개선 사항은 다음과 같습니다.

1. 마크 정렬 알고리즘을 기반으로 메모리 조각화가 발생하지 않습니다.
2. 일시정지 시간을 매우 정밀하게 제어할 수 있으며 처리량을 희생하지 않고도 일시정지 시간이 짧은 가비지 수집을 달성할 수 있습니다.
G1 수집기는 전체 영역 가비지 수집을 피하고 힙 메모리를 고정 크기의 여러 독립 영역으로 나누고
이러한 영역에서 가비지 수집 진행 상황을 추적합니다.동시에 백그라운드에서 우선 순위 목록을 유지 관리합니다. 허용된 수거 시간에 따라 쓰레기
가 가장 많은 부분을 .
영역 분할 및 우선 영역 재활용 메커니즘은 G1 수집기가 제한된 시간 내에 최고의 가비지 수집 효율성을 얻을 수 있도록 보장합니다 .

추천

출처blog.csdn.net/lzzyok/article/details/121324789