>Java >java지도 시간 >Java의 가비지 수집기 유형

Java의 가비지 수집기 유형

PHPz
PHPz원래의
2024-08-30 15:54:06567검색

Java 가비지 수집기 유형은 프로그램 개발에 사용하는 유형을 정의합니다. 가비지 수집은 Java의 중요한 기능입니다. Java에서는 더 이상 사용하지 않는 메모리를 확보하기 위해 가비지 수집을 사용합니다. 가비지 수집기는 아직 사용 중인 모든 개체를 추적하고 나머지 개체를 가비지로 표시합니다. 가비지 수집기는 스윕 및 표시 알고리즘을 사용합니다.

Java에서 가비지 수집은 메모리 관리에 지나지 않습니다. 우리는 JVM을 사용하여 동일한 작업을 수행하고 있습니다. 가비지 수집을 사용하면 프로그래머를 사용하여 개체 할당 및 할당 해제를 처리할 필요가 없습니다. Java 애플리케이션에서는 운영 체제를 사용하여 메모리를 할당하고 해제하며, 애플리케이션과 새 변수의 가비지 수집에서도 동일한 기능을 제공하고 있습니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

Java는 애플리케이션의 다양한 요구 사항을 충족하는 여러 가비지 수집기를 제공합니다. 애플리케이션의 성능을 향상하려면 애플리케이션에 적합한 가비지 수집기를 선택하는 것이 매우 중요합니다. Java는 애플리케이션의 요구 사항을 충족하기 위해 다양한 유형의 가비지 수집기를 제공합니다.

Java의 가비지 수집기 유형

주요 시사점

  • Java의 병렬 GC는 JVM에서 사용되는 기본 가비지 수집기로 알려져 있습니다. 병렬 GC의 작동 방식은 직렬 GC와 동일합니다.
  • 직렬 가비지 수집기는 단일 스레드 환경과 일치합니다. GC에는 단일 스레드를 사용합니다.

Java Garbage Collector의 유형

Java 가비지 컬렉터의 종류는 다음과 같습니다.

우리는 요구 사항에 따라 다음과 같은 유형을 사용하고 있습니다.

  • 직렬 가비지 수집기
  • 병렬 가비지 수집기
  • 동시 마크 스윕 가비지 컬렉터
  • G1 가비지 수집기
  • Epsilon 가비지 수집기
  • Z 가비지 수집기
  • 셰넌도어 가비지 컬렉터

가비지 수집기마다 작동 방식과 성능이 다릅니다. 그것은 자신의 장단점을 포함합니다. Java를 사용하면 JVM에서 사용되는 가비지 수집기를 선택할 수 있습니다. Garbage Collector 선택 시 JVM의 인수를 전달해야 합니다.

1. 직렬 가비지 수집기

이 가비지 수집기는 애플리케이션의 모든 스레드를 보유하는 동안 작동합니다. 따라서 직렬 가비지 수집기 프로세스를 사용하면 애플리케이션의 스레드가 정지된다고 말할 수 있습니다. 이 프로세스는 세계로 알려져 있으며 이벤트를 중지합니다. 서버 환경에서 직렬 가비지 컬렉터의 사용을 허용하려면 간단한 프로그램에서도 동일하게 사용할 수 있습니다.

직렬 가비지 컬렉터를 사용하려면 JVM 인수에 -XX:+UseSerialGC를 실행해야 합니다. 직렬 가비지 컬렉터 사용 시 이를 지정할 수 있습니다.

2. 병렬 가비지 콜렉터

병렬 GC와 직렬 GC의 유일한 차이점은 병렬 GC는 여러 스레드를 사용하는 반면 직렬 GC는 단일 스레드만 사용한다는 것입니다. 우리는 애플리케이션의 처리 속도를 높이기 위해 병렬 GC를 사용하고 있습니다. 이는 처리량 수집기라고도 합니다.

병렬 가비지 컬렉터를 사용하려면 JVM 인수에 –XX:+UseParallelGC를 사용해야 합니다. Java 애플리케이션을 개발하는 동안 병렬 및 직렬 가비지 수집기는 필수적입니다.

3. CMS 가비지 콜렉터

CMS GC에서는 힙 및 검색에 사용되는 여러 스레드를 사용하여 표시된 인스턴스의 제거를 표시합니다. 이 유형의 GC는 GC 시 애플리케이션 스레드를 동결하지 않습니다. 가비지 컬렉터의 스레드는 애플리케이션 스레드와 동시에 실행됩니다.

이 가비지 수집기를 사용하면 여러 CPU를 사용하여 애플리케이션 처리량을 높일 수 있습니다. 사용할 CPU가 더 많으면 CMS GC를 사용합니다. CMS 가비지 수집기를 사용하려면 JVM 인수에 –XX:+UseParNewGC를 사용해야 합니다. 이 가비지 컬렉터를 사용할 때 이 Java Virtual Machine 인수를 사용하고 있습니다.

4. G1 가비지 컬렉터

G1 가비지 수집기는 메모리가 4GB를 초과하는 경우 사용됩니다. 이 GC는 힙을 동일한 크기의 청크로 나누고 우선순위에 따라 병렬 가비지 수집을 수행합니다. G1 가비지 컬렉터가 글로벌 마킹 단계를 보여주고 있습니다.

마킹 단계를 완료하는 동안 이 가비지 컬렉터는 가비지 컬렉터의 개체가 포함된 정보를 수집합니다. G1 가비지 수집기를 사용하려면 JVM 인수에 –XX:+UseG1GC를 사용해야 합니다.

5. 엡실론 가비지 컬렉터

수동적이거나 작동하지 않는 가비지 수집기입니다. 이 가비지 수집기는 애플리케이션에 메모리를 할당하지만 사용되지 않는 개체를 수집하지는 않습니다. 애플리케이션이 힙을 모두 소모하면 JVM이 종료되므로 이 GC가 애플리케이션의 메모리 부족 또는 충돌을 허용한다고 말할 수 있습니다.

이 가비지 컬렉터의 주요 목적은 애플리케이션의 성능을 관리하고 측정하는 것입니다. 이 가비지 컬렉터에는 프로그램 내부에서 실행되던 복잡한 프로그램이 포함되어 있습니다.

6. Z 가비지 컬렉터

이 가비지 수집기는 애플리케이션 실행을 중단하지 않고 모든 작업을 동시에 수행합니다. 이 가비지 수집기는 수 테라바이트 크기의 힙을 처리합니다.

이 유형의 가비지 수집기는 스레드로 주기를 수행합니다. 평균 1MS의 시간에 애플리케이션이 일시 중지됩니다.

7. 셰넌도어 가비지 콜렉터

이 유형의 가비지 수집기는 더 이상 사용되지 않는 객체와 압축 준비가 된 객체를 관리하기 위해 메모리 영역을 사용합니다. 이 가비지 수집기는 지정된 개체에 대한 액세스 제어를 사용하는 모든 힙에 전달 포인터를 추가합니다.

JVM 인수

다음은 Java 가상 머신에 대한 인수입니다. 우리는 가비지 컬렉터에서 이러한 인수를 다음과 같이 사용하고 있습니다.

  • –XX:ParallelGCThreads=: 이 인수는 GC 스레드 수를 제어합니다.
  • –XX:MaxGCPauseMillis=: 이 인수는 최대 일시 중지 시간을 지정합니다.
  • –XX:GCTimeRatio=: 이 인수는 최대 처리량 목표를 지정합니다.
  • –XX:+UseSerialGC: 이 인수는 직렬 가비지 수집기를 지정합니다.
  • –XX:+UseParallelGC: 이 인수는 병렬 가비지 수집기를 지정합니다.
  • –XX:+UseG1GC: 이 인수는 G1 가비지 수집기를 지정합니다.
  • –XX:+UseConcMarkSweepGC: 이 인수는 CMS 가비지 수집기를 지정합니다.
  • –XX:ParallelCMSThreads: 이 인수는 CMS 수집기와 사용하는 스레드 수를 지정합니다.
  • -XX:InitiatingHeapOccupancyPercent=: 이 인수는 동시 주기를 시작하는 동안 힙 점유를 제어합니다.
  • -XX:G1MixedGCLiveThresholdPercent=: 이전 영역에 라이브 개체가 있는 경우 이 인수는 해당 값을 GC 개체에서 제외합니다.
  • -XX:G1HeapWastePercent=: 이 인수는 낭비가 허용되는 지역 수를 지정합니다.

결론

Java는 다양한 애플리케이션의 요구 사항을 충족하기 위해 다양한 가비지 수집기를 제공합니다. 성능을 향상하려면 애플리케이션에 적합한 가비지 수집기를 선택하는 것이 필수적입니다. Java 가비지 수집기 유형은 프로그램을 개발할 때 사용할 가비지 수집기 유형을 정의합니다. Java에는 가비지 수집이라는 중요한 기능이 있습니다.

위 내용은 Java의 가비지 수집기 유형의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:자바 9 모듈다음 기사:자바 9 모듈