Это кажется простым вопросом, но после долгих чтений на эту тему я так и не нашел однозначного ответа (возможно, потому, что это так просто).
У меня такой вопрос: когда сборщик мусора сжимает объекты в куче, как обновляются ссылки на эти объекты в стеке? Я могу придумать два возможных решения:
- Пройдите через стек (и ссылки в куче) и обновите ссылку, чтобы указать новое местоположение объекта. По аналогии с переездом это похоже на отправку письма всем, у кого есть ваш адрес, и просьбу обновить адресную книгу на ваш новый адрес.
- Обеспечить какую-то таблицу поиска. Это все равно, что оставить адрес пересылки в местном почтовом отделении.
Сборщики мусора преимущественно используют один из этих двух методов? Какой-то другой метод? И то и другое?