我用Java的数组玩了一下,我意识到1GB的大字节数组需要4GB的RAM.
这是我的代码(确保你有至少4GB未使用的RAM或你的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");
}
Run Code Online (Sandbox Code Playgroud)
这是我的机器:
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.
那是因为Byte是一个对象,需要足够的内存来保存对象引用.你想要原始类型的小写"字节".