После некоторых исследований наиболее распространенная реализация JVM (HotSpot) используется дляsupport prefetching. Но это has been removed, так как для них нет практического использования. Спасибо @apangin за ссылку на отчет об ошибке.
Как упоминалось в @markspace, объекты переустанавливаются для облегчения доступа во время сбора - это называется «уплотнением» и присутствует в GC по умолчанию, используемом HotSpot. Вам не нужно беспокоиться о таких базовых деталях, как VM обрабатывает это для вас.
Чуть глубже в уплотнении ..
Вы, наверное, слышали о «Стоп-The-World» - это происходит, когда объект граф в неустойчивом состоянии. Объекты перемещаются, поэтому поток может обращаться к объекту, который больше не существует. Существуют некоторые реализации GC, которые считаются «безрезультатными», например Shenandoah GC, которые используют указатель пересылки, чтобы позволить потоку получить доступ к недавно перемещенному объекту.
Суть в том, что вам не нужно беспокоиться о том, где объект может находиться в памяти или как далеко находится местоположение от другого объекта. VM была разработана, чтобы заботиться об этих решениях для вас.
Окончательный ответ
Таким образом, объекты упреждением из массива ссылок? Вы действительно не должны волноваться об этом. Вы используете Java, чтобы не заботиться об этих базовых деталях.
Если вы ДЕЙСТВИТЕЛЬНО заинтересованы в таких деталях (возможно, есть какая-то странная ошибка, с которой вы сталкиваетесь), как я уже упоминал ранее, это конкретная реализация, и вам нужно будет указать, какая реализация вы ссылаясь на.
Хотя, как я уже говорил, это Java; перестаньте беспокоиться о вещах, о которых вам не нужно беспокоиться. Я не могу это подчеркнуть.
Звучит так, как если бы это была конкретная реализация. Я также уверен, что это зависит от программного обеспечения, так как [порядок памяти] (https://en.m.wikipedia.org/wiki/Memory_ordering) может повлиять на такие вещи. Однако может быть неправильно на этой последней части. –
Я уверен, что кеш процессора на 100% под контролем аппаратного обеспечения. Возможно, что, поскольку сборщик мусора работает, он объединяет ваши 1000 объектов в общую область памяти. Однако ничто из того, что я прочитал, не указывает на то, что любой GC делает это. В любом случае аппаратные кэши обычно заполнены важными данными, любой «предварительный кэш» ограничен одной строкой кэша, обычно около 32-16 байтов. – markspace
Куча разделена на молодое и старое пространство.У молодого пространства есть недавно выделенные объекты. Когда эти объекты стареют, они перемещаются в старую область. «Сохранить» - это место недавно выделенных объектов, которые быстро перемещаются и не собираются собирать мусор. –