Почему максимальный размер массива ArrayList равен Integer.MAX_VALUE - 8?

Я изучаю документацию по Java 8 дляArrayList, Я получил, что максимальный размер массива определяется какInteger.MAX_VALUE - 8 значит 2 ^ 31 - 8 =2 147 483 639, Затем я сосредоточился на том, почему вычитается 8 илиwhy not less than 8 или жеmore than 8 вычитается?

/**
 * The maximum size of array to allocate.
 * Some VMs reserve some header words in an array.
 * Attempts to allocate larger arrays may result in
 * OutOfMemoryError: Requested array size exceeds VM limit
 */
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

Я получил несколько связанных ответов, но не выполнил свою задачу.

Максимальный размер Java-массивов?Сколько данных в списке может храниться максимальноПочему я не могу создать массив с большим размером?

Некоторые люди дали некоторую логику, что согласно документации"Some VMs reserve some header words in an array", Так что для слов заголовка вычитается 8. Но в этом случае, если заголовок слова нужно больше, чем 8, то каков будет ответ?

Пожалуйста, разъясните мне на этом основании. Заранее спасибо за ваше сотрудничество.

Ответы на вопрос(3)

Ваш ответ на вопрос