Dissecting the CPU-memory relationship in garbage collection (OpenJDK 26)
L’article analyse la taxonomie des coûts du GC en distinguant le coût explicite, le coût implicite et les effets microarchitecturaux, et promeut OpenJDK 26 comme outil de mesure. Il rappelle que les pauses Serial GC ne reflètent pas le coût total, car le temps CPU et les accès mémoire pendant l’exécution comptent autant que les pauses visibles. La parallélisation (Parallel GC) diminue la durée des pauses sans réduire le coût CPU global, entraînant une inefficacité d’utilisation des ressources. La stratégie G1 déplace une partie du travail en arrière-plan, ce qui sous-estime le coût explicite si l’on se limite à mesurer les pauses. ZGC déporte presque tout le travail, rendant les pauses quasi moindres et le coût non corrélé, et l’auteur recommande l’utilisation des API standard, comme MemoryMXBean.getTotalGcCpuTime et -Xlog:cpu, pour un comptage précis et des benchmarks reproductibles.