这是关于 Java 中内存分配的问题。
假设我有一个整数数组 A[100] 和另一个整数数组 B[10][10]。他们在 Java 中需要相同数量的内存还是不同?如果是后者,有什么区别,它是如何随着 N 增长的?
我在这里只讨论 N 是正数的 2 次方,所以我们在这里讨论方形二维数组及其可能的一维表示。
最佳答案
肯定不会。
在 C/C++ 中,二维数组在“一个 block ”中为二维数组分配所有内存。
在 Java 中,二维数组是“数组的数组”。一维数组是一个chunk分配的,但是一维数组可能是分散的。此外,“外部”数组(二维)也需要堆内存,存储对一维数组的引用。
因此,如果分配一个维度为 m
(外部)和 n
(内部)的二维数组,Java 将创建一个 m
元素和 m
个n
元素数组。外部数组仅存储对 m
内部数组的引用。
This page对 Java 中的多维数组进行了很好的解释和可视化。
关于java - N个元素的一维数组是否需要与2D[m][n]相同的内存量,m*n=N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30958589/