ArrayList 的最大长度为什么是 int 最大值减 8,不懂这 8 个长度去做什么了

2015-09-17 14:20:59 +08:00
 varnotfound

ArrayList 使用数组来存储数据,数组的下标为 int 型。在 ArrayList 的源码中定义的存储数组下标最大值为:

private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

不明白这减个 8 是用来存储什么的?注释” Some VMs reserve some header words in an array “ 没懂这指的是什么? jvm 原理中也没有找到数组存储的最大容量的显式说明,请各位技术大神解惑 :-)
3477 次点击
所在节点    Java
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/221433

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX