java-Xmx60g
コマンドを使用して次のコードを実行しています。
各アレイは約8.5GB、合計17GBである必要があります。マシンの合計は64GBで、 63GBが「無料」です。DONE DECLARING RIVER HANDS 1
最初の配列の宣言が終了したことを示す、を出力します。
しかし、スレッド "main" java.lang.OutOfMemoryErrorで例外が発生します:2番目の配列の宣言中にJavaヒープスペース。アレイは17GBしか使用しないのに対し、は60GB-Xmx60g
を割り当てる必要があると理解しているため、混乱しています。
よろしくお願いします!
long NUM_RIVER_HANDS = 2428287420L;
int half_river = (int)(NUM_RIVER_HANDS/2);
byte[][] river_hands_1 = new byte[half_river][7];
System.out.println("DONE DECLARING RIVER HANDS 1");
byte[][] river_hands_2 = new byte[(int)(NUM_RIVER_HANDS - half_river)][7];
System.out.println("DONE DECLARING RIVER HANDS 2");