gpt4 book ai didi

java - 在二维数组中切换数组大小需要不同的内存量

转载 作者:行者123 更新时间:2023-12-04 19:24:59 27 4
gpt4 key购买 nike

我在 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");
// 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");

在第一种情况下,我得到 6MB,因此阵列按预期占用 4MB。然而,在第二种情况下,矩阵需要 28MB。为什么它们不相等?

最佳答案

差异在于开销。对于每个数组,Java 都必须保存信息。它只是 4 个长数组与 1000000 个短数组。

关于java - 在二维数组中切换数组大小需要不同的内存量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59995320/

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