尽管内存充足,但巨大的阵列仍会抛出内存
使用该标志提供 1 GB 的堆,以下内容按预期工作:-Xmx1G
public class Biggy {
public static void main(String[] args) {
int[] array = new int[150 * 1000 * 1000];
}
}
该数组应表示大约 600 MB。
但是,以下抛出 OutOfMemoryError:
public class Biggy {
public static void main(String[] args) {
int[] array = new int[200 * 1000 * 1000];
}
}
尽管数组应表示大约800 MB,因此很容易放入内存中。
缺失的记忆去哪儿了?