java outOfMemory(閾値:2147483647)について
javaの配列はint
型の値で表されます。したがって、配列の最大インデックスはint
型の上限値であり、その値は2の31乗から1を引いたものとなります。
int maxIndex = Integer.MAX_VALUE - 1;
System.out.println(maxIndex);
javaはゼロオリジンのため、0~2147483646の2147483647配列が上限となります。これを超える値を格納しようとすると、オーバーフローが発生します。
参考文献
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html