Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon การใช้ Shenandoah หรือ ZGC ในการเก็บขยะมีประโยชน์อย่างไร


การใช้ Shenandoah หรือ ZGC ในการเก็บขยะมีประโยชน์อย่างไร


Shenandoah และ ZGC คือตัวรวบรวมขยะขั้นสูงสองตัวที่ได้รับการออกแบบมาเพื่อมอบการรวบรวมขยะที่มีความหน่วงต่ำและมีประสิทธิภาพสำหรับแอปพลิเคชัน Java นี่คือประโยชน์หลักบางประการของการใช้นักสะสมเหล่านี้:

เชนันโดอาห์ GC:

1. เวลาหยุดชั่วคราวต่ำ: Shenandoah GC ได้รับการออกแบบมาเพื่อลดเวลาหยุดชั่วคราวโดยดำเนินการรวบรวมขยะส่วนใหญ่พร้อมกับแอปพลิเคชัน เพื่อให้แน่ใจว่าแอปพลิเคชันยังคงตอบสนองและทำงานได้ดีแม้ภายใต้การใช้งานหน่วยความจำจำนวนมาก[1] [3]

2. การบีบอัดพร้อมกัน: Shenandoah GC ดำเนินการบีบอัดพร้อมกัน ซึ่งหมายความว่าจะบีบอัดฮีปในขณะที่แอปพลิเคชันกำลังทำงาน ซึ่งช่วยลดความจำเป็นในการหยุดรวบรวมขยะทั้งหมดชั่วคราว และช่วยให้ฮีปยังคงมีขนาดกะทัดรัดและมีประสิทธิภาพ[1][3]

3. ไม่ขึ้นกับขนาดฮีป: เวลาหยุดชั่วคราวของ Shenandoah GC ไม่ขึ้นอยู่กับขนาดฮีป ซึ่งหมายความว่าสามารถจัดการฮีปขนาดใหญ่ได้โดยไม่มีการหยุดชั่วคราวอย่างมีนัยสำคัญ ทำให้เหมาะสำหรับแอปพลิเคชันที่ต้องการการจัดสรรหน่วยความจำขนาดใหญ่[1][3]

4. ปริมาณงานสูง: Shenandoah GC ได้รับการออกแบบมาเพื่อให้ปริมาณงานสูงโดยการลดเวลาที่ใช้ในการรวบรวมขยะให้เหลือน้อยที่สุด สิ่งนี้ทำให้แน่ใจได้ว่าแอปพลิเคชันสามารถทำงานได้อย่างมีประสิทธิภาพต่อไปแม้ภายใต้การใช้งานหน่วยความจำจำนวนมาก[1] [3]

ZGC:

1. เวลาแฝงต่ำ: ZGC ได้รับการออกแบบมาเพื่อให้เวลาแฝงต่ำมากโดยการลดเวลาที่ใช้ในการรวบรวมขยะให้เหลือน้อยที่สุด ซึ่งบรรลุเป้าหมายนี้ด้วยการดำเนินการรวบรวมขยะส่วนใหญ่ไปพร้อมกับแอปพลิเคชัน และโดยใช้แนวทางแบบอิงภูมิภาครุ่นเดียว[2]

2. NUMA-Aware: ZGC ได้รับการออกแบบมาให้รับรู้ NUMA ซึ่งหมายความว่าสามารถจัดการฮีปขนาดใหญ่และคอร์ CPU หลายคอร์ได้อย่างมีประสิทธิภาพ เพื่อให้แน่ใจว่าตัวรวบรวมขยะสามารถใช้ประโยชน์จากทรัพยากรฮาร์ดแวร์ที่มีอยู่ได้[2]

3. ปริมาณงานสูง: ZGC ได้รับการออกแบบมาเพื่อให้ปริมาณงานสูงโดยการลดเวลาที่ใช้ในการรวบรวมขยะ สิ่งนี้ทำให้แน่ใจได้ว่าแอปพลิเคชันสามารถทำงานได้อย่างมีประสิทธิภาพต่อไปแม้ภายใต้การใช้งานหน่วยความจำจำนวนมาก[2]

4. คุณสมบัติทดลอง: ZGC เป็นคุณสมบัติทดลองที่ต้องใช้ตัวเลือกบรรทัดคำสั่งเฉพาะเพื่อเปิดใช้งาน เหมาะสำหรับแอปพลิเคชันที่ต้องใช้เวลาหยุดชั่วคราวสั้นมากและสามารถรองรับการจัดสรรหน่วยความจำขนาดใหญ่ได้[2]

โดยสรุป ทั้ง Shenandoah และ ZGC ได้รับการออกแบบมาเพื่อมอบการรวบรวมขยะที่มีเวลาแฝงต่ำและมีประสิทธิภาพสำหรับแอปพลิเคชัน Java เหมาะสำหรับแอปพลิเคชันที่ต้องการปริมาณงานสูงและสามารถรองรับการจัดสรรหน่วยความจำขนาดใหญ่ได้

การอ้างอิง:
[1] https://clojure-goes-fast.com/blog/shenandoah-in-production/
[2] https://developers.redhat.com/articles/2021/11/02/how-choose-best-java-garbage-collector
[3] https://www.reddit.com/r/feedthebeast/comments/r24zg4/upgrade_your_java_to_one_that_has_the_shenandoah/
[4] https://stackoverflow.com/questions/64252590/how-does-clr-gc-compare-to-latest-zgc-and-shenandoah-gc-on-jvm
[5] https://www.uber.com/blog/jvm-tuning-garbage-collection/
-