Java - 字节数组使用的ram是set的4倍

时间:2014-06-15 20:32:31

标签: java arrays ram

我用Java的数组玩了一下,我意识到1GB的大字节数组需要4GB的RAM。 那是我的代码(确保你有至少4GB未使用的内存,否则你的PC可能会冻结)

public static void main(String[] args) throws InterruptedException {
    Byte[] array = new Byte[1073741823]; // Equals 1GB

    System.out.println("Done");
    Thread.sleep(10000);
    System.out.println("Completely done");
}

那是我的机器:
MacBook Pro(64位;运行OS X 10.9)
Java:Java SE 6(1.6.0_65-b14-462)和Java SE 7(1.7.0_45)。 RAM:16
使用的RAM:大约10GB

当我启动此应用程序时,它使用4GB而不是1.我使用这些参数来启动该程序:-Xmx8g -d64

1 个答案:

答案 0 :(得分:6)

那是因为Byte是一个对象,需要足够的内存来保存对象引用。你想要原始类型的小写“字节”。