Použití ZGC s víceterabajtovými haldami může mít několik dopadů na výkon:
1. Nízká latence: ZGC je navrženo tak, aby minimalizovalo doby pauzy a zajistilo, že aplikace zůstane reagovat i při velkých hromadách. Dosahuje toho prováděním většiny prací na sběru odpadu současně s aplikací, což má za následek doby pauzy kratší než 10 ms[3][4].
2. Vysoká propustnost: ZGC je navržen tak, aby poskytoval vysokou propustnost minimalizací času stráveného sběrem odpadu. To zajišťuje, že aplikace může nadále efektivně běžet i při velkém využití paměti[2][4].
3. Multi-Mapping: ZGC používá multi-mapování k mapování různých rozsahů virtuální paměti na stejnou fyzickou paměť. To může vést ke zvýšenému využití paměti, protože operační systém může hlásit 3x větší využití paměti kvůli dalším mapováním[1].
4. Barevné ukazatele: ZGC používá barevné ukazatele k ukládání metadat v 64bitových ukazatelích. To může přinést další práci při dereferencování ukazatelů, ale technika více mapování pomáhá zmírnit tuto režii[2].
5. NUMA-Aware: ZGC je navrženo tak, aby podporovalo NUMA, což znamená, že dokáže efektivně zvládnout velké hromady a více jader CPU. To zajišťuje, že garbage collector může využívat dostupné hardwarové prostředky[2][4].
6. Možnosti ladění: ZGC má několik možností ladění, jako je nastavení maximální velikosti haldy a počtu souběžných vláken GC. Tyto možnosti mohou pomoci vyvážit využití paměti a výkon sběru odpadků[3][4].
7. Experimentální funkce: ZGC je experimentální funkce a vyžaduje specifické možnosti příkazového řádku k aktivaci. Je vhodný pro aplikace, které vyžadují velmi krátké pauzy a zvládnou velké alokace paměti[1][3].
Stručně řečeno, použití ZGC s víceterabajtovými haldami může poskytnout nízkou latenci, vysokou propustnost a efektivní správu paměti. Vyžaduje však pečlivé vyladění a může vést ke zvýšenému využití paměti v důsledku vícenásobného mapování.
Citace:[1] https://stackoverflow.com/questions/62926652/the-java-zgc-garbage-collector-uses-a-lot-of-memory
[2] https://www.opsian.com/blog/javas-new-zgc-is-very-exciting/
[3] https://docs.oracle.com/en/java/javase/11/gctuning/z-garbage-collector1.html
[4] https://developers.redhat.com/articles/2021/11/02/how-choose-best-java-garbage-collector
[5] https://dzone.com/articles/java-z-garbage-collector-zgc-a-deep-dive-with-exam