私はJavaで大きなハッシュテーブルを利用しなければならないプログラムを書いています.ハッシュテーブルが大きければ大きいほど良いです(それはチェスプログラムです:P). 基本的に、ハッシュ テーブルの一部として、"long[]" の配列、"short[]" の配列、および "byte[]" の 2 つの配列があります。それらはすべて同じサイズでなければなりません。ただし、テーブル サイズを 1000 万に設定すると、クラッシュし、「Java ヒープがメモリ不足です」と表示されます。これは私には意味がありません。これが私がそれを見る方法です:
1 Long + 1 Short + 2 Bytes = 12 bytes
x 10,000,000 = 120,000,000 bytes
/ 1024 = 117187.5 kB
/ 1024 = 114.4 Mb
現在、114 Mb の RAM は私には多すぎるとは思えません。合計で、私の CPU には 4Gb の RAM が Mac に搭載されています。FreeMemory というアプリを使用すると、空き RAM の量が表示されます。このプログラムの実行中は約 2Gb です。また、Java プリファレンスを -Xmx1024m のように設定したので、Java は最大 1 ギガのメモリを使用できるはずです。では、なぜ 114Mb しか割り当てられないのでしょうか?