Java 中多维数组的维数顺序

问题描述 投票:0回答:1

当我在 Java 中定义一个 4d 数组(如

var f = new float[1000][3][250][250];
)时,它仅在堆内存上占用 797 MB,但是当我像
var f = new float[1000][250][250][3];
那样定义它时,它在堆上占用 2273 MB(大约大 3 倍)。有人可以解释一下原因吗?为什么维度排列对内存消耗影响这么大?

它不是应该占用大约 750 MB 的空间吗(1000×3×250×250×(4 字节浮点数)= 750)?

java arrays multidimensional-array heap-memory
1个回答
0
投票

java中没有真正的多维数组的概念,这就是你犯错误的地方。 在Java中,float[][]将被称为float类型数组的数组。简而言之,java 不会像 c 或 c++ 那样为多维数组(数组的数组)分配内存。

这里有更详细信息的参考 为什么Java没有真正的多维数组?

© www.soinside.com 2019 - 2024. All rights reserved.