我在 Java 中声明了一个字节类型的二维数组矩阵。在检查尺寸为 (10^6 x 4) 的内存时,它与相同尺寸的矩阵截然不同,但尺寸为 (4 x 10^6)。
// Measure memory before matrix initialization -> 2MB
System.out.println("Meg used="+(Runtime.getRuntime().totalMemory()-
Runtime.getRuntime().freeMemory())/(1000*1000)+"M");
byte[][] test = new byte[4][1000000]; // init
// Measuring memory after -> 6MB as expected
System.out.println("Meg used="+(Runtime.getRuntime().totalMemory()-
Runtime.getRuntime().freeMemory())/(1000*1000)+"M");
Run Code Online (Sandbox Code Playgroud)
// Measure memory before matrix initialization -> 2MB
System.out.println("Meg used="+(Runtime.getRuntime().totalMemory()-
Runtime.getRuntime().freeMemory())/(1000*1000)+"M");
byte[][] test = new byte[1000000][4]; // init
// Measuring memory after -> 30MB
System.out.println("Meg used="+(Runtime.getRuntime().totalMemory()-
Runtime.getRuntime().freeMemory())/(1000*1000)+"M");
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,我得到 6MB,因此阵列按预期占用 4MB。然而,在第二种情况下,矩阵需要 28MB。为什么它们不相等?