Коротко, нет.
Java работает только со ссылками на объекты. То, что вы описываете, зависит от низкоуровневого управления распределением/использованием памяти, позволяющим выделить блок памяти для записей «n». Java просто не работает так - вы никогда не контролируете память, и JVM имеет право перемещать объекты в памяти. Вы только когда-либо дело со ссылками.
Обратите внимание, что объекты, содержащие ссылки, будут ссылаться на другие отдельные блоки памяти, поэтому понятие объекта, содержащегося в одном смежном блоке памяти, на самом деле не существует.
Если вам действительно нужен массив байтов, поддерживаемый памятью, может использоваться DirectByteBuffer. Это класс java.nio
, построенный с использованием класса sun.misc.Unsafe
. Возможно, вы могли бы сериализовать/десериализовать объекты (тщательно подсчитывая размер, чтобы правильно определить индексирование). Но стоимость сериализации замачивала бы любую другую экономию, я бы подозревал.
Какая польза от этого получится? Местность кэша процессора в лучшем случае? –
Да ЦП и, возможно, что-то еще, чего я не знаю. Вот почему я спрашиваю. – karakalos10
Вы всегда можете просто использовать JNI список C++ для Java. Это может быть лучше, чем ваш подход, но если ваше приложение в основном Java, то это будет почти невидимым. –