Я читаю настройку JVM, и мне пришло в голову, что JVM продолжает перемещать объекты вокруг, когда это делает GC. Но объекты Java имеют ссылки друг на друга, которые, как предполагается, реализуются как указатели, но JVM не может перебирать всю кучу после каждого перемещения объектов и обновлять все ссылки; конечно, что навсегда. Итак, как он разрешает ссылки, если ссылки не меняются, но физическое расположение объектов?
Я много читал о JVM, но это никогда не объяснялось и даже не намекало нигде.
[EDIT] Я хочу сказать, что ссылки являются односторонними. Переход от указателя к заостренному является "мгновенным", но для перехода на другой путь требуется полное сканирование кучи. Хотя это возможно, это кажется маловероятным. Если объекты 10K выйдут из небольшой коллекции, сколько времени потребуется, чтобы выполнить полную проверку кучи 10K раз, чтобы обновить ссылки на эти объекты? Должен быть какой-то оптимизированный алгоритм или структура.