Я изучаю документацию по 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, то каков будет ответ?
Прошу прояснить меня на этой основе. Благодарим за сотрудничество.