【问题标题】:Number of bytes allocated to an array after it's declaration in java在java中声明后分配给数组的字节数
【发布时间】:2016-02-18 20:56:59
【问题描述】:

在Java中,如何在声明后检查分配给数组的字节数? 例如:

int[] a = new int[10]; 

数组 'a' 被分配 4*10 字节,因为 int 的大小是 4 字节并且有 10 个整数元素。有没有一种非手动的方式来做到这一点?

【问题讨论】:

标签: java arrays


【解决方案1】:

在 Java 中,没有像 C 中的 sizeof 这样的运算符来获取数组元素的大小。所以至少没有直接的方法。

顺便说一句,声明期间没有分配内存,仅在初始化期间。

声明:

int[] a;

初始化:

a = new int[10]; 

【讨论】:

    【解决方案2】:

    实际上int[10] 的大小是 56 字节或更多(取决于您的 JVM)。

    • 10 * 4 = 10 个整数的 40 个字节
    • 4字节存储数组长度
    • 8 个字节用于 Java 对象
    • 4 个字节使对象的大小成为 8 的倍数(对齐)。

    但这一切都取决于您操作系统的 JVM 和内存架构。 java.lang.instrumentation.Instrumentation 提供了一种计算对象大小的方法,如 this answer 中所述。

    【讨论】:

      猜你喜欢
      • 2011-06-04
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      相关资源
      最近更新 更多