Можно ли размещать объекты в Java последовательно?

Предположим, у меня есть большой массив относительно небольших объектов, которые мне нужно часто повторять.
Я хотел бы оптимизировать свою итерацию, улучшив производительность кеша, поэтому я хотел бы размещать объекты [а не ссылку] в памяти непрерывно, чтобы у меня было меньше промахов кеша, и общая производительность может быть значительно лучше.

В C++ я мог бы просто выделить массив объектов, и они будут размещены так, как я хотел, но в java при выделении массива я выделяю только ссылку, и выделение выполняется по одному объекту за раз. время.

Я знаю, что если я размещаю объекты «сразу» [один за другим], jvm скорее всего будет размещать объекты как можно более смежными, но этого может быть недостаточно. если память фрагментирована.

Мои вопросы:

  1. Есть ли способ сказать jvm дефрагментировать память непосредственно перед тем, как я начну выделять свои объекты? Будет ли этого достаточно, чтобы гарантировать [насколько это возможно] непрерывное размещение объектов?
  2. Есть ли другое решение этой проблемы?
6
задан Peter Lawrey 12 April 2016 в 08:40
поделиться