gpt4 book ai didi

java - 数组占用多少空间?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:49:22 24 4
gpt4 key购买 nike

如果我创建 10 个整数和一个 10 的整数数组,占用的总空间会有什么不同吗?

我必须创建一个包含数百万条记录的 boolean 数组,所以我想了解数组本身会占用多少空间。

最佳答案

一个整数数组表示为存储整数的内存块和一个对象头。对于 32 位 JVM,对象 header 通常需要 3 个 32 位字,但这取决于平台。 ( header 包含一些标志位、对类描述符的引用、原始锁信息的空间以及实际数组的长度。加上填充。)

所以 10 个整数的数组可能占用 13 * 4 字节的区域。

Integer[] 的情况下,每个 Integer 对象都有一个 2 字标题和一个包含实际值的 1 字字段。并且您还需要添加填充和 1 个字(或 64 位 JVM 上的 1 到 2 个字)以供引用。这通常是数组的每个元素 5 个字或 20 个字节……除非某些 Integer 对象出现在数组的多个位置。


注意事项:

  1. 在 64 位 JVM 上实际用于引用的字数取决于是否使用“压缩 oops”。
  2. 在某些 JVM 上,堆节点以 16 字节的倍数分配......这会增加空间使用量(例如上面提到的填充)。
  3. 如果您获取一个对象的身份哈希码并且它在下一次垃圾回收中幸存下来,它的大小会膨胀至少 4 个字节以缓存哈希码值。
  4. 除了上面列举的可变性来源之外,这些数字都是特定于版本和供应商的。

关于java - 数组占用多少空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11466553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com