GC Doctor Analysez vos logs de ramasse-miettes dans le navigateur Analyser votre log GC dans GC Doctor

English

Objet humongous (G1)

Dans G1, objet dont la taille atteint au moins la moitié d'une région. Il est alloué directement dans des régions anciennes contiguës et évite la génération jeune.

Dans G1, objet dont la taille atteint au moins la moitié d'une région. Il est alloué directement dans des régions anciennes contiguës et évite la génération jeune.

G1 découpe le tas en régions égales de 1 à 32 Mio (une puissance de deux choisie selon la taille du tas ; -XX:G1HeapRegionSize la remplace). De grands tableaux, tampons ou chaînes peuvent dépasser la moitié d'une région. Ils occupent alors entièrement une ou plusieurs régions contiguës, et la fin inutilisée de la dernière est perdue.

Cela pose trois problèmes : la fragmentation (il faut des régions libres contiguës), les cycles concurrents prématurés (une allocation humongous peut déclencher une collecte Concurrent Start ; la cause dans le log est G1 Humongous Allocation) et, quand le tas en est presque plein, des échecs d'évacuation ou des collectes complètes. Les objets humongous morts peuvent être récupérés tôt pendant les collectes jeunes, mais ceux qui vivent longtemps restent jusqu'à un cycle concurrent ou une collecte mixte.

Remèdes : augmenter la taille des régions, découper les gros tampons ou les réutiliser. La vue Humongous de GC Doctor liste les collectes concernées.

Documentation officielle : Garbage-First (G1) Garbage Collector (Oracle)

Région

Bloc de taille fixe du tas. Les collecteurs à régions (G1, ZGC, Shenandoah) récupèrent la mémoire région par région plutôt qu'en une génération contiguë.

G1 divise le tas en environ 2048 régions de taille égale (1 à 32 Mio). Chaque région reçoit un rôle selon les besoins : eden, survivor, ancienne ou humongous. G1 peut ainsi choisir quelles régions collecter pour respecter son objectif de pause. ZGC utilise des pages de 2 Mio (petits objets), 32 Mio (moyens) ou plus grandes pour les gros objets, et Shenandoah divise aussi le tas en régions.

Une organisation en régions évite une séparation fixe entre jeune et ancien et permet un compactage partiel. Le revers est le gaspillage interne quand les objets ne remplissent pas les régions, comme avec les objets humongous de G1.

Documentation officielle : Garbage-First (G1) Garbage Collector (Oracle), The Z Garbage Collector (Oracle)

Objet humongous (G1)