1 亿个 int 的 int 数组应该是 400 MB,对吧?1 个整数 = 4 个字节
因此,如果我使用 -Xmx1024m 将 VM 的最大堆设置为 1024m,为什么此代码会失败:
public static void main(String[] args) {
int[] b = new int[100000000]; //100 mil = 400mb
System.out.println("ok");
int[] c = new int[100000000];
}
这是输出:
ok
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at Main.main(Main.java:9)
解决方案- 打破它!
public static void main(String[] args) {
int[] a = new int[50000000]; //50 mil = 200mb
System.out.println("ok 1");
int[] b = new int[50000000];
System.out.println("ok 2");
int[] c = new int[50000000];
System.out.println("ok 3");
int[] d = new int[50000000];
System.out.println("ok 4");
}