小编鄭无爲*_*鄭无爲的帖子

java对象数组大小

在计算对象数组的内存大小时,下面的代码按预期给出"使用过的24个字节",据我所知,它包括:

4bytes(element pointer)+16bytes(object header)+4bytes(element space) = 24bytes

// with JVM argument -XX:-UseTLAB
public static void main(String[] args) {
    long size = memoryUsed();
    Object[] o = new Object[]{1};
    //Object[] o = new Object[]{1L};
    size = memoryUsed() - size;
    System.out.printf("used %,d bytes%n", size);
    //Output: used 24 bytes
}

public static long memoryUsed() {
    return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
}
Run Code Online (Sandbox Code Playgroud)

但是当元素类型改为Long(1L)时,结果令人困惑,大部分时间它都是"使用了9,264字节",任何人都可以帮助启发我吗?这两种元素类型之间的内存分配有什么不同?

// with JVM argument -XX:-UseTLAB
public static void main(String[] args) {
    long size = memoryUsed();
    //Object[] o = new …
Run Code Online (Sandbox Code Playgroud)

java arrays object

5
推荐指数
1
解决办法
640
查看次数

标签 统计

arrays ×1

java ×1

object ×1