为什么 ArrayList 的最大数组大小是 Integer.MAX_VALUE - 8?
我正在学习 Java 8 文档。我得到的最大数组大小被定义为意味着2 ^ 31 – 8 = 2 147 483 639。然后我专注于为什么减去或减去8?ArrayList
Integer.MAX_VALUE - 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;
我得到了一些相关的答案,但没有实现我的主旨。
有些人给出了一些逻辑,根据文档。因此,对于标题单词,将减去 8。但是在这种情况下,如果标题词需要超过8个,那么答案是什么?"Some VMs reserve some header words in an array"
请在此基础上澄清我。提前感谢您的合作。