jugnsk Митап #15 JUGNsk (17.07.2020 — 17.07.2020)

Shenandoah GC 2.0 (часть 2)

img

После того, как мы разобрались с главными фазами и превратили их в конкурентные, паузы в основном стали определяться более короткими, но всё равно зачастую stop-the-world активностями между большими конкурентными эпохами. В них придётся заниматься всяким: сканировать GC roots, взаимодействовать с языковыми фичами, которые в курсе про существование GC (например, weak references), разбираться с проблемами в реализации safepoint-ов, менеджить память и как-то делиться ей с ОС и т.п. Этот доклад ныряет в кроличью нору проблем, с которыми вынужден столкнуться низкопаузный GC вроде Shenandoah, размышляет, что можно сделать с этими проблемами на уровне JVM, а также над тем, что могут предпринять предусмотрительные разработчики низкопаузных Java-систем, зная об этих граблях.