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

English

Pause / Stop-the-world

Période pendant laquelle tous les threads de l'application sont arrêtés pour que le collecteur travaille sur un tas qui ne bouge pas sous ses pieds.

Période pendant laquelle tous les threads de l'application sont arrêtés pour que le collecteur travaille sur un tas qui ne bouge pas sous ses pieds.

Les pauses sont ce que les utilisateurs ressentent comme de la latence : une requête qui arrive pendant une pause attend toute la pause. Une ligne de log comme Pause Young (Normal) (G1 Evacuation Pause) 24M à 4M (256M) 3.2ms donne la cause, le tas avant et après la collecte, la taille de tas allouée et la durée.

Tout le travail de collecte n'est pas une pause. Les collecteurs modernes (G1, ZGC, Shenandoah) font l'essentiel du marquage en concurrence et gardent les phases stop-the-world courtes, mais certaines étapes en exigent toujours une : démarrer et terminer un cycle de marquage, évacuer les objets vivants dans G1, ou une collecte complète de secours. La durée d'une pause croît avec la quantité de données vivantes à copier ou parcourir, pas avec la quantité de déchets ; ZGC et Shenandoah font exception, leurs pauses ne dépendent presque pas de la taille du tas.

GC Doctor trace chaque pause dans le temps et indique la plus longue, le 99e centile et la part du temps passée en pause.

Documentation officielle : JEP 271: Unified GC Logging

Latence

Ce que le GC coûte à une requête : les pauses qu'il ajoute au temps de réponse, surtout en queue de distribution.

Les moyennes cachent le problème. Un collecteur dont la pause moyenne est de 1 ms peut quand même produire une pause de 500 ms une fois par minute, et c'est ce que montre le 99e centile de la latence côté client. Regardez la pause maximale et le 99e centile des pauses, puis la fréquence des pauses longues. Les effets cumulés comptent aussi : plusieurs pauses dans la même requête s'additionnent.

La pause rapportée dans le log GC est un minorant de l'arrêt vu par l'application, car le temps pour atteindre un safepoint et celui pour relancer les threads sont hors de cette mesure.

Pause / Stop-the-world