Zbiralec z smeti (ZGC) in Shenandoah Garbage Collector sta napredni algoritmi za zbiranje smeti, ki se izvajajo v virtualnem stroju Java (JVM), zasnovani za ravnanje z velikimi kopicami z minimalnimi časi premora in optimizirajo zmogljivosti aplikacije. Oba sta namenjena sodobnim aplikacijam z velikimi potrebami po pomnilniku in potrebami po nizkih zamudah, vendar ponujata različne tehnične pristope in koristi.
Prednosti z zbiralca smeti (ZGC):
1. Nizka zamuda: Ena najpomembnejših prednosti ZGC je njegova sposobnost, da ohrani čas za odvzem smeti dosledno pod 10 milisekund. Ta nizka zamuda se vzdržuje ne glede na velikost kopice, vključno z zelo velikimi kopicami, ki lahko obsegajo do več terabajtov. Ta funkcija je ključnega pomena za realne in interaktivne aplikacije, kjer je odzivnost najpomembnejša.
2. Scaliability: ZGC učinkovito obravnava kopice od sto megabajtov do 16 terabajtov. Dobro se spreminja v širokem razponu velikosti aplikacij brez povečanih časov pavze, zaradi česar je primeren tako za srednje kot za izjemno velike delovne obremenitve.
3. Sočasna izvedba: ZGC hkrati izvaja večino svojega zbiranja smeti s tekočimi nitmi aplikacij. To pomeni, da se drage naloge, kot so označevanje in premestitev predmetov, opravljajo brez ustavljanja aplikacijskih niti, s čimer se izognemo dolgim zaustavitvam sveta.
4. Prilagodljivo in minimalno nastavitev: Zasnova ZGC mu omogoča, da se samodejno prilagodi spremembam delovne obremenitve z velikostjo generacij, prilagaja števila GC niti in uglaševanje drugih parametrov med izvajanjem. To zmanjšuje potrebo po obsežni ročni konfiguraciji in uglaševanju za optimalno delovanje.
5. Učinkovitost pomnilnika in upravljanje fragmentacije: ZGC uporablja napredne tehnike, vključno z barvnimi kazalci in obremenitvami za učinkovito sledenje lokacijam objektov in zagotavljanje skladnosti podatkov. Prav tako izvaja sočasno zbiranje, kar pomaga zmanjšati razdrobljenost pomnilnika in ohraniti učinkovito uporabo kopice.
6. GENERACIONALNO ZBIRGIJO SEBAVE: Sodobna različica ZGC podpira generacijsko zbiranje smeti, ki izboljšuje učinkovitost z različnim zdravljenjem mladih in starih generacij in optimizira cikel zbiranja, ki temelji na objektni starosti in vzorcih dodelitve.
7. Zavedanje NUMA: ZGC je zasnovan tako, da se zaveda arhitektur neenakomernih pomnilnikov (NUMA), optimizira zbiranje smeti v sistemih z več pomnilniškimi vozlišči za izboljšanje zmogljivosti sodobne strojne opreme.
8. Energetska učinkovitost in izkoriščanje virov: ZGC s hkratnim tekom in zmanjševanjem časov premora zmanjšuje prosti čas CPU in izboljša skupno porabo CPU -ja, kar vodi do manjše porabe energije. To je še posebej koristno za oblačne in obsežne uvajanja, kjer energetska učinkovitost pomeni prihranke stroškov in boljšo trajnost.
Prednosti zbiratelja smeti Shenandoah:
1. Nizka zamuda s sočasnim zbijanjem: Shenandoah je zasnovan tako, da zmanjša čas pavze z izvajanjem sočasnega stiskanja poleg aplikacijskih niti. Ta agresivna stiskanja pomaga pri zmanjšanju razdrobljenosti pomnilnika in ohranja čas premor nizke, kar je ključnega pomena za interaktivne in latentno občutljive aplikacije.
2. Zmanjšane GC pavze: Shenandoah lahko vzdržuje kratke in predvidljive čase premora tudi v velikih kopicah. Zmanjša pavze za zaustavitev sveta za izboljšanje odzivnosti aplikacij.
3. Maksimirana pretok v scenarijih srednjega RAM-a: Shenandoah se je pokazalo, da se odlikuje v okoljih, ki so srednje v uporabi pomnilnika, kar ponuja večjo pretok v primerjavi z nekaterimi drugimi zbiralci z nizko vrednostjo. Zaradi tega je optimalno za aplikacije z zmernimi velikostmi kopice, ki zahtevajo delovanje in nizko zamudo.
4. Nadzor fragmentacije: Njen pristop k agresivnemu zbijanju učinkovito nadzoruje razdrobljenost kopit, ohranjanje prostora za kopice in zmanjšanje nadzemne stroške upravljanja pomnilnika.
5. Sočasno zbiranje smeti: Tako kot ZGC tudi Shenandoah hkrati izvaja večino zbiranja smeti z aplikacijskimi nitmi, kar zmanjšuje vpliv GC na izvajanje aplikacije.
6. Primerno za velike kopice in večkratna okolja: Shenandoah obravnava zelo velike velikosti kopice, pogosto nad 32 GB, in učinkovito upravlja s scenariji z več nitmi, zaradi česar je primeren za sodobne aplikacije strežnika in oblaka.
7. Energetska in stroškovna učinkovitost: Shenandoahov sočasni model zmanjšuje čas prostega časa CPU med operacijami GC, kar pomaga z nižjo porabo energije in povečuje učinkovitost virov, zrcaljenje ciljev trajnosti v obsežnih uvajanju.
Primerjalni premisleki:
- Medtem ko oba kolektorja ciljata na skrajšanje časa premora in izboljšanje pretoka, je ZGC opažen po ohranjanju zelo nizkih in skoraj konstantnih časov premora, ne glede na velikost kopice, zmanjšanje na zelo velike kopice (do 16 terabajtov). Shenandoah je bolj optimiziran za srednje do velike kopice in lahko v teh scenarijih zagotavlja boljši pretok.
- ZGC uporablja inovativne ovire za obremenitev in barvne kazalce za napredno upravljanje pomnilnika, medtem ko se Shenandoah za ublažitev fragmentacije opira na sočasne tehnike stiskanja.
-Z vidika energetske učinkovitosti oba kolektorja zmanjšata zapravljene cikle CPU-ja s prekrivanjem odvzema smeti z izvajanjem aplikacije, kar lahko zmanjša porabo energije za do 30% v primerjavi s tradicionalnimi zbiratelji svetovnega sveta.
- Potrebe konfiguracije in uglaševanja so na splošno nizke za oba kolektorja, vendar je ZGC zasnovan tako, da je bolj prilagodljiv za spreminjanje delovnih obremenitev med izvajanjem.
Če povzamemo, ZGC ponuja zelo razširljivo, nizko zamudo in večinoma rešitev za samostojno odbijanje smeti, ki je idealna za aplikacije, ki zahtevajo predvidljive odzivne čase z zelo velikimi kopicami. Shenandoah poudarja nizke čase premora s sočasnim zbijanjem in lahko doseže večjo pretok v srednjem pomnilniškem okolju, hkrati pa je učinkovit tudi pri porabi energije in virov. Izbira med obema je pogosto odvisna od posebnih zahtev uporabe glede velikosti kopice, pretoka, zamud in upoštevanja operativnega okolja.