가비지 우선 수집기

Garbage-first collector

G1(가비지 우선 수집기)은 Oracle HotSpot Java 가상 시스템(JVM) 6도입가비지 수집 알고리즘으로 7 업데이트 4부터 지원됩니다.JVM 7에서 CMS(Concurrent Mark Sweep Collector)를 대체하기 위해 계획되었으며 Java [1]9에서는 기본값이 되었습니다.

가비지 콜렉터

Garbage-First(G1) Collector는 대용량 메모리가진 멀티프로세서를 대상으로 하는 서버 스타일의 가비지 컬렉터이며, 높은 스루풋[2]실현하면서 소프트 실시간 목표를 달성합니다.G1은 라이브 데이터의 양이 가장 적은 영역, 즉 "쓰레기 우선"[3]을 우선적으로 수집합니다.G1은 CMS를 장기적으로 대체하는 것입니다.히프나 라이브 데이터 크기에 비례하는 중단을 방지하기 위해 글로벌 마킹과 같은 전체 히프 작업이 애플리케이션 스레드와 동시에 수행됩니다.동시 마킹은 수집의 완전성을 제공하고 압축 대피에 의해 매립이 가능한 지역을 식별합니다.이 대피는 멀티프로세서에서 병렬로 실행되어 일시정지 시간을 단축하고 throughput을 향상시킵니다.

G1은 Java SE 6 Update [4]14에서 실험적인 옵션으로 처음 도입되었습니다.이 옵션에서는 다음 2개의 명령줄 파라미터를 사용하여 활성화 할 수 있습니다.-XX:+UnlockExperimentalVMOptions그리고.-XX:+UseG1GCJDK 7에서는 Hotspot JVM의 CMS를 G1이 대체할 예정이었습니다.CMS와 G1 사이에는 크게 두 가지 차이가 있습니다.첫 번째는 G1이 압축 [5]수집기라는 것입니다.G1은 할당에 세세한 프리 리스트의 사용을 완전히 회피할 수 있도록 충분히 컴팩트합니다.이것에 의해, 수집기의 일부가 큰폭으로 심플화되어, 잠재적인 플래그멘테이션의 문제가 대부분 해소됩니다.압축뿐만 아니라 G1은 CMS 수집기보다 예측 가능한 가비지 수집 일시 중지를 제공하며 사용자가 원하는 일시 중지 대상을 설정할 수 있습니다.

Java 9에서는 Google [7]카운터가 잘 알려진 CMS를 표준으로 제안했음에도 불구하고 G1이 기본 가비지 [6][1]컬렉터가 되어 G1보다 성능이 더 좋다고 주장했습니다.이후 Oracle은 G1의 throughput, 레이텐시메모리 설치 공간을 [8]대폭 개선했습니다.

관련 제품

가비지 컬렉션을 사용하더라도 실시간 동작을 보장하려면 Sun의 Java RTS[9] 또는 IBM의 WebSphere [10]RT와 함께 제공되는 가비지 컬렉터가 필요합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b "JEP 248: Make G1 the Default Garbage Collector". openjdk.java.net. Retrieved 2019-12-09.
  2. ^ Detlefs, David; Flood, Christine; Heller, Steve; Printezis, Tony (2004). "Garbage-First Garbage collection". Ismm'04: 37. CiteSeerX 10.1.1.63.6386. doi:10.1145/1029873.1029879. ISBN 1581139454.
  3. ^ "Part 1: Introduction to the G1 Garbage Collector". www.redhat.com.
  4. ^ "G1: Java's Garbage First Garbage Collector". Dr Dobbs.
  5. ^ "The Garbage First Collector". www.fasterj.com.
  6. ^ "Why G1 is default garbage collector for Java 9?".
  7. ^ "Java 9's new garbage collector: What's changing? What's staying? - JAXenter". jaxenter.com. 26 June 2015.
  8. ^ Johansson, Stefan (11 October 2021). "G1: To Infinity and Beyond". inside.java.
  9. ^ http://www.oracle.com/technetwork/articles/javase/index-138577.html 실시간 Java 테크놀로지 소개: Part 2, 가비지 컬렉션 및 Sun Java 실시간시스템(Java RTS)
  10. ^ http://www.ibm.com/developerworks/java/library/j-rtj4/index.html?S_TACT=105AGX02&S_CMP=EDU 실시간 가비지 컬렉션

외부 링크