programing

Java 8의 기본 가비지 수집기

luckcodes 2023. 1. 1. 12:12

Java 8의 기본 가비지 수집기

Java 8의 기본 가비지 컬렉터는 무엇입니까?

JMX Beans를 확인해보니 신세대 병행 수집기, 구세대 병행 수집기라고 나와 있습니다.

기본 가비지 수집기:

  • Java 7 - 병렬 GC
  • Java 8 - 병렬 GC
  • Java 9 - G1 GC
  • Java 10 - G1 GC

기본 가비지 컬렉터를 선택하는 것은 JVM의 인체공학 프로세스라고 불립니다.이 프로세스는 기계 클래스에 따라 달라집니다.

  • 서버 클래스 머신의 경우(플랫폼에 관계없이) 2개 이상의 물리 프로세서와 2GB 이상의 물리 메모리를 갖춘 머신으로 정의되어 있습니다.기본 가비지 컬렉터는 병렬 수집기(스루풋 수집기라고도 불립니다)입니다.
  • 윈도우즈 또는 단일 프로세서 시스템에서 32비트 플랫폼으로 정의되는 클라이언트 클래스 시스템의 경우 기본 가비지 컬렉터는 직렬 수집기입니다.

실질적으로 모든 머신에는 2개 이상의 CPU가 탑재되어 있기 때문에 JVM에서는 실질적으로 하나의 머신이 항상 서버 클래스로 간주됩니다.따라서 병렬 수집기를 기본 가비지 수집기로 간주하는 참조가 많이 발견됩니다.

Java에는 4종류의 가비지 컬렉터(버전 10까지)가 있습니다만, Java 11의 안정 릴리스 후에는 5종류가 됩니다.다음은 다음과 같습니다.

  1. 직렬 가비지 수집기 -S GC
  2. 병렬 가비지 수집기 -P GC
  3. CMS 가비지 컬렉터 -CMS GC
  4. G1 가비지 콜렉터-G1 GC
  5. Z 가비지 콜렉터-ZGC

Java에서의 GC 디폴트 실장 -

JVM GC

 Java 7 - P GC       
 Java 8 - P GC
 Java 9 - G1 GC
 Java 10- G1 GC
 Java 11- Z GC(I am not sure but it would be default GC of java 11)

ZGC에 대한 자세한 내용은 다음을 참조하십시오.

http://openjdk.java.net/projects/zgc/

https://www.opsian.com/blog/javas-new-zgc-is-very-exciting/

주의: 현재 JVM에서 사용되는 GC를 확인하려면 다음 명령을 사용하여 기본 GC를 표시할 수 있습니다.-

$ java -XX:+PrintCommandLineFlags -version 

필요에 따라서 GC 를 설정하는 경우는, 다음의 커맨드로 설정할 수 있습니다.여기서는 G1 GC를 기본 GC로 설정합니다.

$ java -XX:+UseG1GC -XX:+PrintCommandLineFlags -version 

여기에 이미지 설명 입력

For more details , please visit 

https://javapapers.com/java/types-of-java-garbage-collectors/

https://alvinalexander.com/java/java-jvm-how-show-which-garbage-collector-running

Java 9부터 Java 15까지 G1GC는 2개의 신세대 Garbage Collector를 추가한 Java 15에서도 기본입니다. Oracle이 ZGC를 개발하는 것과 Shenandoah인 레드햇 구현은 모두 2020년 9월 Java 15에서 운영 준비가 되었습니다.ZGC는 오픈 JDK https://wiki.openjdk.java.net/display/zgc/Main에서 이용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/33206313/default-garbage-collector-for-java-8