int类型数组的4个字节是否分布在java中的数组元素中?

Is the 4 bytes of an array of type int distributed among the elements of the array in java?

我想知道数组的数据类型是每个元素的数据类型还是整个数组的数据类型。例如,这段代码会保留 4 字节还是 16 字节的 RAM?

int[] collection = {30, 40, 50, 60};

这是一个包含四个元素的数组,其中每个元素都是一个 int。由于单个 int 占用 4 个字节,因此数组总共占用 4*4 = 16 个字节。

4 个 int 值中的每一个都使用 4 个字节。

然而,该数组在 OpenJDK(和 JVMS 一样)中使用了一个 8 - 12 字节长的对象头

默认情况下对象对齐为 8 字节,因此对象的大小将四舍五入为 8 的倍数。

这意味着对象的长度可以是 24 到 32 个字节。

对该对象的引用将是 4 个字节,除非您有一个禁用了 Compressed Oops 的 64 位 JVM。

What is in java object header

Document -XX:ObjectAlignmentInBytes

Compressed OOPs