ตัวรวบรวมขยะเริ่มต้นสำหรับ Java 8 คืออะไร?
เมื่อฉันตรวจสอบ JMX Beans พวกเขาเปิดเผยว่าเป็นตัวสะสมคู่ขนานสำหรับคนรุ่นใหม่และตัวเก็บอนุกรมรุ่นเก่าสำหรับคนรุ่นเก่า
ตัวรวบรวมขยะเริ่มต้นสำหรับ Java 8 คืออะไร?
เมื่อฉันตรวจสอบ JMX Beans พวกเขาเปิดเผยว่าเป็นตัวสะสมคู่ขนานสำหรับคนรุ่นใหม่และตัวเก็บอนุกรมรุ่นเก่าสำหรับคนรุ่นเก่า
คำตอบ:
พนักงานเก็บขยะเริ่มต้น:
การเลือกตัวเก็บขยะเริ่มต้น (เหนือสิ่งอื่นใด) คือสิ่งที่เรียกว่ากระบวนการยศาสตร์ของ JVM กระบวนการนี้ขึ้นอยู่กับคลาสของเครื่องของคุณ
เนื่องจากเครื่องทั้งหมดมี CPU ตั้งแต่ 2 เครื่องขึ้นไป JVM จะถือว่าเครื่องเป็นระดับเซิร์ฟเวอร์เสมอ นั่นเป็นเหตุผลที่คุณจะพบข้อมูลอ้างอิงจำนวนมากโดยพิจารณาว่าตัวรวบรวมแบบขนานเป็นตัวเก็บขยะเริ่มต้น
Java มีตัวรวบรวมขยะสี่ประเภท (สูงสุดเวอร์ชัน 10) แต่หลังจากปล่อย java 11 อย่างเสถียรแล้วจะมี 5 ประเภท เหล่านี้คือ: -
S GC
P GC
CMS GC
G1 GC
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/
หมายเหตุ:หากคุณต้องการตรวจสอบว่า 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 เป็นค่าเริ่มต้นแม้กระทั่งใน Java 15 ซึ่งเพิ่มตัวเก็บขยะรุ่นใหม่สองตัวซึ่ง Oracle พัฒนา ZGC และการใช้งานหมวกแดงซึ่งเป็น Shenandoah ทั้งคู่พร้อมใช้งานจริงใน Java 15 กันยายนของปี 2020
UnlockExperimentalVMOptions
แต่บน jdk 15 ไม่ใช่อีกต่อไป 3. ParallelGC เป็น GC เริ่มต้นสำหรับ JDK 8 ซึ่งเป็นคำถามที่นี่
Since Java 8 until Java 15 the G1GC is the default even on Java 15
วลีไม่ถูกต้อง ค่าเริ่มต้น JDK 8 คือ Parallel คุณบอกว่าตัวเองแสดงความคิดเห็นคำตอบยังผิด Shenandoah สามารถใช้งานได้ใน JDK 8 และ JDK 11 ซึ่งถูกย้ายกลับ