Если JVM продолжает перемещать объекты, когда выполняет сборку мусора, как она разрешает ссылки?

Я читал о настройке JVM, и мне пришло в голову, что JVM продолжает перемещать объекты, когда выполняет сборку мусора. Но объекты Java имеют ссылки друг на друга, которые, как можно предположить, реализованы как указатели, но JVM не может проходить через всю кучу после каждого перемещения объектов и обновлять все ссылки; конечно, это будет длиться вечно. Так как же он разрешает ссылки, если ссылки не меняются, но изменяется физическое расположение объектов?

Я много читал о JVM, но это нигде не объяснялось и даже не намекалось.

[EDIT] Я хочу сказать, что ссылки - это односторонние вещи. Переход от указателя к указателю происходит «мгновенно», но для перехода в обратном направлении потребуется полное сканирование кучи. Хотя это возможно, это кажется маловероятным. Если 10К объектов выживают в незначительной коллекции, сколько времени потребуется, чтобы выполнить полное сканирование кучи 10К раз, чтобы обновить ссылки на эти объекты? Должен быть использован какой-то оптимизированный алгоритм или структура.

21
задан Cratylus 27 February 2012 в 14:24
поделиться