Почему регистры процессора действуют как корни для сборщика мусора?

0

Почему регистры процессора действуют как корни для сборщика мусора? Когда мутатор делает паузу, сборщик мусора может сканировать корни, содержимое переменных сбрасывается в память (используя забор памяти), поэтому регистры не содержат данных, которые не находятся в памяти... если мое понимание правильное...

Зачем вам нужно их сканировать? Я вижу это как избыточность...

Теги:
garbage-collection
memory-fences

1 ответ

0

Сброс в память - это деталь реализации. Важно то, что данные, содержащиеся в регистрах во время запуска цикла GC, рассматриваются как доступные, независимо от того, как и где эти данные хранятся в памяти в течение самого цикла GC.

  • 0
    Мой вопрос: если я гарантирую, что все мутаторы приостановлены, и они (мутаторы) вызвали std::atomic_thread_fence перед приостановкой ... все ли значения регистров были сброшены в память после std::atomic_thread_fence ? Итак, если все сброшено в память (и при условии, что программист сам не изменит значения регистра), зачем мне читать регистры при сканировании корней?
  • 1
    @DaniloCarvalho Нет, вы не можете гарантировать, что все регистры сбрасываются в память, хотя бы потому, что соответствующая реализация может иметь переменные только для регистров (да, даже указатели на объекты), которые никогда не записываются в память.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню