Недавно я прочитал отрывки о сборке мусора (в основном на Java), и один вопрос до сих пор остается без ответа: как JVM (или система времени выполнения в целом) отслеживает ТЕКУЩИЕ живые объекты?
Я понимаю, что объекты - это те, которые в данный момент находятся в стеке, поэтому все локальные переменные или параметры функций, которые ЯВЛЯЮТСЯ объектами. Проблема с этим подходом заключается в том, что всякий раз, когда система времени выполнения проверяет, что в данный момент находится в стеке, как она будет отличать ссылочную переменную от простого int? не может, не так ли?
Следовательно, должен быть какой-то механизм, позволяющий среде выполнения создавать начальный список живых объектов для перехода на фазу маркировки-развертки...