Збірник сміття за замовчуванням для Java 8


94

Який збирач сміття за замовчуванням для Java 8?

Коли я перевіряю JMX Beans, вони виявляють, що це паралельний колектор для нового покоління та старий послідовний колектор для старого покоління.

Відповіді:


130

Збірники сміття за замовчуванням:

  • Java 7 - паралельний GC
  • Java 8 - паралельний GC
  • Java 9 - G1 GC
  • Java 10 - G1 GC

Будь ласка, посилання на джерело інформації.
Едуард Вірч

80

Вибір збирача сміття за замовчуванням (серед іншого) - це те, що називається процесом ергономіки JVM. Цей процес залежить від класу вашої машини.

  • Для машини серверного класу, що визначається як машина з 2 або більше фізичними процесорами та 2 або більше ГБ фізичної пам'яті (незалежно від платформи), за замовчуванням збирачем сміття є паралельний колектор (також відомий як пропускна здатність колектора).
  • Для машини клієнтського класу, яка визначається як 32-розрядна платформа в Windows або однопроцесорна машина, збирачем сміття за замовчуванням є послідовний збирач.

Оскільки практично всі машини мають 2 і більше центральних процесорів, машина практично завжди вважається серверним класом JVM. Ось чому ви знайдете багато посилань, вважаючи паралельний колектор типовим збирачем сміття.


55

Java має чотири типи збирачів сміття (до версії 10), але після стабільного випуску java 11 це буде 5 типів. Це: -

  1. Серійний збирач сміття - S GC
  2. Паралельний збирач сміття- P GC
  3. CMS Смітник - CMS GC
  4. Збірник сміття G1- G1 GC
  5. Збірник сміття Z ZGC

Реалізації GC за замовчуванням у Java -

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/

Примітка: Якщо ви хочете перевірити, який GC наразі використовується JVM, ви можете скористатися наступною командою, щоб показати 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


Для подальших деталей було б корисно згадати джерело діаграми
xagaffar

2
привіт @xagaffar ось джерело url javapapers.com/java/types-of-java-garbage-collectors
Браджеш

3
@Brajesh Я не думаю, що ZGC є типовим GC JDK 11. Відкрита вікі JDK ( wiki.openjdk.java.net/display/zgc/Main ) стверджує "Використовуйте -XX: + UnlockExperimentalVMOptions -XX: + Використовуйте параметри ZGC, щоб увімкнути ZGC ". це означає, що це не за замовчуванням.
Ashish Kumar

1
Ні, це не за замовчуванням JDK11. -XX: + UnlockExperimentalVMOptions -XX: + Використовуйте опції ZGC, щоб дозволити ZGC розблокувати ZGC
vsingh

1
Схеми потоку зображень дійсно корисні для пояснення різниці між "послідовними", "паралельними" та "одночасними" збирачами сміття, але це стає справді безглуздим із цими дев'ятьма кольоровими квадратами для колектора G1. Що вони повинні означати? Нитки стають квадратами?
Холгер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.