Shenandoah och ZGC är två avancerade sophämtare utformade för att ge låg latens och effektiv sophämtning för Java-applikationer. Här är några viktiga fördelar med att använda dessa samlare:
Shenandoah GC:
1. Låga paustider: Shenandoah GC är utformad för att minimera paustider genom att utföra det mesta av sophämtningsarbetet samtidigt med applikationen. Detta säkerställer att applikationen förblir lyhörd och fungerar bra även under stor minnesanvändning[1][3].
2. Samtidig komprimering: Shenandoah GC utför samtidig komprimering, vilket innebär att den komprimerar högen medan applikationen körs. Detta minskar behovet av fullständiga uppehåll i sophämtningen och säkerställer att högen förblir kompakt och effektiv[1][3].
3. Oberoende av högstorlek: Shenandoah GC:s paustider är oberoende av högstorleken. Detta innebär att den kan hantera stora högar utan betydande pauser, vilket gör den lämplig för applikationer som kräver stora minnesallokeringar[1][3].
4. Hög genomströmning: Shenandoah GC är designad för att ge hög genomströmning genom att minimera tiden som ägnas åt sophämtning. Detta säkerställer att applikationen kan fortsätta att köras effektivt även under stor minnesanvändning[1][3].
ZGC:
1. Låg latens: ZGC är utformad för att ge extremt låg latens genom att minimera tiden som ägnas åt sophämtning. Den uppnår detta genom att utföra det mesta av sophämtningsarbetet samtidigt med applikationen och genom att använda en engenerations, regionbaserad metod[2].
2. NUMA-Aware: ZGC är designad för att vara NUMA-medveten, vilket innebär att den effektivt kan hantera stora högar och flera CPU-kärnor. Detta säkerställer att sopsamlaren kan dra nytta av de tillgängliga hårdvaruresurserna[2].
3. Hög genomströmning: ZGC är designad för att ge hög genomströmning genom att minimera tiden som ägnas åt sophämtning. Detta säkerställer att applikationen kan fortsätta att köras effektivt även under stor minnesanvändning[2].
4. Experimentell funktion: ZGC är en experimentell funktion som kräver specifika kommandoradsalternativ för att aktiveras. Den är lämplig för applikationer som kräver mycket korta paustider och kan hantera stora minnesallokeringar[2].
Sammanfattningsvis är både Shenandoah och ZGC designade för att tillhandahålla låg latens och effektiv sophämtning för Java-applikationer. De är lämpliga för applikationer som kräver hög genomströmning och kan hantera stora minnesallokeringar.
Citat:[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/