1億intのint配列は400MBである必要がありますよね?1つのint=4バイト
したがって、VMの最大ヒープを-Xmx1024mで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");
}