栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么ArrayList的最大数组大小为Integer.MAX_VALUE-8?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么ArrayList的最大数组大小为Integer.MAX_VALUE-8?

阅读上述有关Java内存管理的文章,其中清楚指出

我认为这适用于ArrayList,因为它是Resizable array的实现。

Java数组对象的剖析

数组对象(例如int值的数组)的形状和结构与标准Java对象的形状和结构相似。主要区别在于,数组对象还有一个额外的元数据,它表示数组的大小。然后,数组对象的元数据包括:Class:指向类信息的指针,该信息描述对象的类型。对于int字段数组,这是指向int
[]类的指针。

标志:描述对象状态的标志的集合,包括对象的哈希码(如果有的话)以及对象的形状(即,对象是否为数组)。

Lock:对象的同步信息,即对象当前是否同步。

Size:数组的大小。

最大尺寸

2^31 = 2,147,483,648

作为数组,它本身需要

8 bytes
存储大小
2,147,483,648

所以

2^31 -8 (for storing size ),

因此最大数组大小定义为Integer.MAX_VALUE-8



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号