Стеки ниток сканируются всегда, а не только в G1
; но afaik во всех остальных сборщиках мусора, реализованных на JVM. GC
должен начинаться с некоторых известных корней, чтобы определить, что живо, а что нет. В случае любого java G C, эти корни состоят из различных частей, среди прочего: стеки ниток.
В каждом цикле они сканируются; в конце концов, они будут изменены и потенциально будут разными в каждом цикле. Болезненная часть состоит в том, что , пока это не реализовано , это фаза остановки мира. А фазы STW
могут стать большими из-за безопасного опроса точек или количества потоков. В сценарии реальной жизни ios (по крайней мере, в тех, с которыми я был связан), это не проблема; это быстрый процесс (с Shenandoah 2.0
, я видел максимум 15 ms
пауз).
remembered sets
как-то выполняет другую роль .