Zberateľ z odpadu (ZGC) a Shenandoah Collector sú pokročilé algoritmy zberu odpadu implementované vo virtuálnom stroji Java (JVM), ktoré sú navrhnuté tak, aby zvládli veľké haldy s minimálnym časom pauzy a optimalizovali výkon aplikácie. Obe sú určené pre moderné aplikácie s veľkými požiadavkami na pamäť a nízkymi potrebami latencie, ale ponúkajú odlišné technické prístupy a výhody.
Výhody z kolektora odpadu (ZGC):
1. Nízka latencia: Jednou z najvýznamnejších výhod ZGC je jeho schopnosť udržiavať zber odpadu pozastavenie časov dôsledne pod 10 milisekúnd. Táto nízka latencia sa udržiava bez ohľadu na veľkosť haldy vrátane veľmi veľkých haldy, ktoré sa môžu rozšíriť až do viacerých terabajtov. Táto funkcia je rozhodujúca pre aplikácie v reálnom čase a interaktívne aplikácie, v ktorých je reagujúca pravosť prvoradá.
2. Škálovateľnosť: ZGC účinne spracováva haldy v rozsahu od stoviek megabajtov po 16 terabajtov. Dobre sa prispôsobuje širokej škále veľkostí aplikácií bez zvýšených časov pauzy, vďaka čomu je vhodný pre stredné aj extrémne veľké pracovné zaťaženie.
3. Súbežné vykonávanie: ZGC vykonáva väčšinu svojej práce na zbierku odpadu súbežne s vláknami bežiacich aplikácií. To znamená, že drahé úlohy, ako je označovanie a premiestnenie objektov, sa vykonávajú bez zastavenia vlákien aplikácií, čím sa vyhýbajú pozastaveniam s dlhým zastavením sveta.
4. Adaptívne a minimálne ladenie: Návrh ZGC mu umožňuje automaticky prispôsobiť sa zmenám pracovného zaťaženia zmenami generácií, úpravou počtu vlákien GC a dynamickým ladením ďalších parametrov počas behu. To znižuje potrebu rozsiahlej manuálnej konfigurácie a ladenia pre optimálny výkon.
5. Účinnosť pamäte a správa fragmentácie: ZGC používa pokročilé techniky vrátane farebných ukazovateľov a prekážok zaťaženia na efektívne sledovanie umiestnení objektov a zabezpečenie konzistentnosti údajov. Vykonáva tiež súbežné zhutnenie, ktoré pomáha minimalizovať fragmentáciu pamäte a udržiavať efektívne využitie haldy.
6. Generačná zbierka odpadu: Moderná verzia ZGC podporuje generačné zbierky odpadu, ktorý zlepšuje efektívnosť tým, že ošetrí mladé a staré generácie odlišne, optimalizáciou cyklu zberu na základe veku objektov a prideľovacích vzorcov.
7. NUMA povedomie: ZGC je navrhnutá tak, aby si bola vedomá architektúr nejednotného prístupu k pamäti (NUMA), optimalizácia zberu odpadu v systémoch s viacerými pamäťovými uzlami na zlepšenie výkonu moderného hardvéru.
8. Energetická účinnosť a využitie zdrojov: Súbežne a minimalizácia časov pozastavenia ZGC znižuje voľnobežné časy CPU a zlepšuje celkové využitie CPU, čo vedie k nižšej spotrebe energie. To je obzvlášť prospešné pre nasadenie založené na cloudu a vo veľkom meradle, kde sa energetická účinnosť premieta do úspor nákladov a lepšej udržateľnosti.
Výhody zberateľa odpadu Shenandoah:
1. Nízka latencia so súbežným zhutnením: Shenandoah je navrhnutý tak, aby minimalizoval čas pozastavenia vykonaním súbežného zhutňovania spolu s aplikáciami. Toto agresívne zhutňovanie pomáha pri znižovaní fragmentácie pamäte a udržuje nízku pozastavenie, čo je nevyhnutné pre interaktívne a latenčné aplikácie.
2. Znížené pauzy GC: Shenandoah môže udržiavať krátke a predvídateľné časy pauzy aj vo veľkých halových prostrediach. Minimalizuje zastávky Stop-the-World, aby sa zlepšila reakcia na aplikáciu.
3. Maximalizovaná priepustnosť v scenároch stredného pamäte RAM: Ukázalo sa, že Shenandoah vynikne v prostrediach, ktoré sú médium v oblasti využívania pamäte, čo ponúka vyššiu priepustnosť v porovnaní s niektorými inými zberateľmi s nízkym vystužením. Vďaka tomu je optimálny pre aplikácie s miernymi veľkosťami haldy, ktoré si vyžadujú výkonnosť aj nízku latenciu.
4. Riadenie fragmentácie: jej prístup k agresívnemu zhutňovaniu efektívne riadi fragmentáciu haldy, zachováva priestor pre haldy a znižuje režijnú hodnotu správy pamäte.
5. Súbežná zbierka odpadu: Rovnako ako ZGC, Shenandoah vykonáva väčšinu práce na zber odpadu súbežne s vláknami aplikácií, čo minimalizuje vplyv GC na vykonávanie aplikácií.
6. Vhodné pre veľké haldy a viacnásobné prostredie: Shenandoah spracováva veľmi veľké veľkosti haldy, často nad 32 GB, a efektívne riadi viacnásobné scenáre, vďaka čomu je vhodné pre moderné aplikácie servera a cloud.
7. Energia a nákladová efektívnosť: Súbežný model spoločnosti Shenandoah znižuje voľnobežný čas CPU počas operácií GC, čo pomáha znižovať využitie energie a zvyšuje efektívnosť zdrojov, čo odráža ciele udržateľnosti vo rozsiahlom nasadení.
Porovnávacie úvahy:
- Zatiaľ čo obidva kolektory sa zameriavajú na skrátenie časov pauzy a zlepšenie priepustnosti, ZGC sa zaznamenáva na udržiavanie veľmi nízkych a takmer konštantných časov pauzy bez ohľadu na veľkosť haldy, škálovanie na veľmi veľké haldy (až 16 terabajtov). Shenandoah je optimalizovanejší pre stredné až veľké haldy a v týchto scenároch môže poskytnúť lepšiu priepustnosť.
- ZGC využíva inovatívne prekážky zaťaženia a farebné ukazovatele na správu pokročilej pamäte, zatiaľ čo Shenandoah sa spolieha na súbežné techniky zhutňovania na zmiernenie fragmentácie.
-Z hľadiska energetickej účinnosti obaja kolektori znižujú zbytočné cykly CPU prekrývajúcimi sa prácou na zber odpadu s vykonávaním aplikácií, čo môže znížiť spotrebu energie až o 30% v porovnaní s tradičnými zberateľmi sveta.
- Potreby konfigurácie a ladenia sú vo všeobecnosti nízke pre obidvoch zberateľov, ale ZGC bola navrhnutá tak, aby bola adaptívnejšia na zmenu pracovného zaťaženia počas runtime.
Stručne povedané, ZGC ponúka vysoko škálovateľné, nízko-latenčné a do značnej miery samoliečujúce riešenie zberu odpadu ideálne pre aplikácie vyžadujúce predvídateľné časy odozvy s veľmi veľkými haldami. Shenandoah zdôrazňuje nízke časy pauzy so súbežným zhutňovaním a môže dosiahnuť vyššiu priepustnosť v prostrediach strednej pamäte a zároveň je efektívny pri využívaní energie a zdrojov. Výber medzi nimi často závisí od konkrétnych požiadaviek na aplikáciu týkajúce sa veľkosti haldy, priepustnosti, latencie a operačného prostredia.