Jaki jest domyślny moduł odśmiecania pamięci dla Java 8?
Kiedy sprawdzam JMX Beans, okazuje się, że jest to kolektor równoległy dla nowej generacji i stary kolektor szeregowy dla starej generacji.
java
garbage-collection
java-8
Code Junkie
źródło
źródło
Wybieranie (między innymi) domyślnego modułu odśmiecania pamięci to tzw. Proces ergonomii maszyny JVM. Ten proces zależy od klasy twojego komputera.
Ponieważ praktycznie wszystkie maszyny mają 2 lub więcej procesorów, maszyna JVM praktycznie zawsze jest traktowana jako klasa serwera. Dlatego znajdziesz wiele odniesień, biorąc pod uwagę, że kolektor równoległy jest domyślnym zbieraczem elementów bezużytecznych.
źródło
Java ma cztery typy garbage collectorów (do wersji 10), ale po stabilnej wersji java 11 będzie to 5 typów. To są:-
S GC
P GC
CMS GC
G1 GC
ZGC
Domyślne implementacje GC w Javie -
Więcej szczegółów na temat ZGC można znaleźć na stronie
http://openjdk.java.net/projects/zgc/
https://www.opsian.com/blog/javas-new-zgc-is-very-exciting/
Uwaga: jeśli chcesz sprawdzić, który GC jest obecnie używany przez JVM, możesz przejść do następującego polecenia, aby wyświetlić domyślny GC: -
Jeśli chcesz ustawić GC zgodnie ze swoimi potrzebami, możesz to zrobić, wykonując następujące polecenie. Tutaj mam zamiar ustawić G1 GC jako domyślny GC.
https://javapapers.com/java/types-of-java-garbage-collectors/
https://alvinalexander.com/java/java-jvm-how-show-which-garbage-collector-running
źródło
Od Java 9 do Java 15, G1GC jest domyślnym nawet w Javie 15, która dodaje dwa nowe generatory Garbage collectors, ten, który Oracle opracowuje ZGC i implementację Red Hat, którą jest Shenandoah, oba są gotowe do produkcji w Javie 15 września 2020 roku.
źródło
UnlockExperimentalVMOptions
, ale na jdk 15 już nie. 3. ParallelGC jest domyślnym GC dla JDK 8, o co właściwie chodzi tutaj.Since Java 8 until Java 15 the G1GC is the default even on Java 15
, że sformułowanie jest nieprawidłowe. Domyślnie JDK 8 to Parallel, sam powiedziałeś to jako komentarz, odpowiedź wciąż jest błędna. Shenandoah może być używany w JDK 8 i JDK 11, został z powrotem przeniesiony.