Есть 4 фазы высокого уровня CMS работает для полного GC
- Начальная отметка: - Остановить мир (STW)
- Параллельная маркировка: - Запускать одновременно
- Примечание: - STW
- Параллельная подметание: - Запускать одновременно
Я получил высокий уровень понимания CMS после прочтения
http://www.tikalk.com/java/garbage-collection-serial-vs-parallel-vs-concurrent-mark-sweep/ и https://plumbr.eu/handbook/garbage-collection-algorithms-implementations/concurrent-mark-and-sweep
Мой вопрос: почему начальный этап оценки является STW для этапа Initial Mark
? Разве мы не можем использовать только этап Remark в качестве STW, поскольку это последний этап согласования.
Точно так же, почему Sweeping phase
не является STW, поскольку для этого потребуется уплотнение, что означает изменение физического местоположения объекта. Итак, если на объект ссылается приложение, а параллельный поток меняет физическое местоположение, не будет ли это проблемой?
Я знаю, что я что-то упускаю здесь, но что это?