Pengumpul sampah default untuk Java 8

94

Apa pengumpul sampah default untuk Java 8?

Ketika saya memeriksa JMX Beans, mereka mengungkapkannya sebagai kolektor paralel untuk generasi baru dan kolektor serial lama untuk generasi lama.

Code Junkie
sumber

Jawaban:

130

Pengumpul sampah default:

  • Java 7 - GC Paralel
  • Java 8 - GC Paralel
  • Java 9 - G1 GC
  • Java 10 - G1 GC
x4444
sumber
Harap tautkan ke sumber informasi.
Eduard Wirch
80

Memilih pengumpul sampah default (antara lain) adalah apa yang disebut proses ergonomis JVM. Proses ini tergantung pada kelas mesin Anda.

  • Untuk mesin kelas server, yang didefinisikan sebagai mesin dengan 2 atau lebih prosesor fisik dan 2 GB atau lebih memori fisik (terlepas dari platformnya), pengumpul sampah default adalah pengumpul paralel (juga dikenal sebagai pengumpul throughput).
  • Untuk mesin kelas klien, yang didefinisikan sebagai platform 32-bit di Windows atau mesin prosesor tunggal, pengumpul sampah default adalah kolektor serial.

Karena hampir semua mesin memiliki 2 atau lebih CPU, mesin secara praktis selalu dianggap kelas server oleh JVM. Itulah mengapa Anda akan menemukan banyak referensi yang mempertimbangkan kolektor paralel sebagai pengumpul sampah default.

Tunaki
sumber
55

Java memiliki empat jenis pengumpul sampah (Hingga versi 10), tetapi setelah Java 11 dirilis secara stabil, akan ada 5 jenis. Ini adalah: -

  1. Serial Pengumpul Sampah- S GC
  2. Pengumpul Sampah Paralel- P GC
  3. Pengumpul Sampah CMS- CMS GC
  4. G1 Pengumpul Sampah- G1 GC
  5. Pengumpul Sampah Z- ZGC

Implementasi default GC di 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)

Detail lebih lanjut untuk ZGC, silakan kunjungi

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

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

Catatan: Jika Anda ingin memverifikasi, GC mana yang saat ini digunakan oleh JVM, Anda dapat menggunakan perintah berikut untuk menampilkan GC default: -

$ java -XX:+PrintCommandLineFlags -version 

Jika Anda ingin mengatur GC sesuai kebutuhan Anda, Anda dapat melakukannya dengan mengikuti perintah. Di sini saya akan mengatur G1 GC sebagai GC default.

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

masukkan deskripsi gambar di sini

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

Brajesh
sumber
Akan berguna untuk menyebutkan sumber diagram untuk detail lebih lanjut
xagaffar
2
hai @xagaffar di sini adalah sumber url javapapers.com/java/types-of-java-garbage-collectors
Brajesh
3
@Brajesh Saya tidak berpikir ZGC adalah GC default JDK 11. Buka JDK wiki ( wiki.openjdk.java.net/display/zgc/Main ) menyatakan "Gunakan opsi -XX: + UnlockExperimentalVMOptions -XX: + UseZGC options untuk mengaktifkan ZGC. " itu artinya ini bukan default.
Ashish Kumar
1
Tidak, itu bukan default JDK11. -XX: + UnlockExperimentalVMOptions -XX: + Gunakan opsi ZGC untuk mengaktifkan ZGC untuk membuka ZGC
vsingh
1
Diagram alir dari gambar sangat berguna untuk menjelaskan perbedaan antara pengumpul sampah "serial", "paralel", dan "serentak", tetapi ini menjadi sangat tidak masuk akal dengan sembilan kotak berwarna ini untuk pengumpul G1. Apa yang mereka maksud? Benang menjadi kotak?
Holger