OutOfMemoryError 例外の受け取り
OutOfMemoryError 例外は、Java™ヒープまたはネイティブヒープのスペース不足により発生します。
Javaヒープが枯渇した場合、Javaヒープの OutOfMemoryError 状態を示すエラーメッセージが受信されます。 プロセス・アドレス・スペース (つまり、ネイティブ・ヒープ) が不足すると、ネイティブ割り振りが失敗したことを示すエラー・メッセージを受け取ります。 いずれにせよ、問題はメモリー・リークではなく、単に必要とされるメモリーの定常的な使用状態が使用可能なメモリー量を上回ったと考えられます。 したがって、最初に行うべきことは、どちらのヒープが使い果たされつつあるのかを判別して、そのヒープのサイズを増やすことです。
実際にメモリー・リークが発生して問題が生じている場合には、ヒープ・サイズを大きくしても問題は解決しませんが、OutOfMemoryError 例外またはエラー条件の発生を遅らせることにはなります。 実動システムでは、この遅れが役に立つ場合があります。
割り振り可能なオブジェクトの最大サイズは、使用可能メモリー量によってのみ制限されます。 サポートされる配列要素の最大数は 2 ^ 31-1 で、Java 仮想マシン仕様で許可されている最大数です。 実際には、使用可能メモリー量が原因で大きな配列を割り振れないことがあります。 -Xmx コマンド行オプションを使用して、オブジェクトに使用できるメモリーの総量を構成してください。 このような制限は、32 ビットと 64 ビットの JVM に適用されます。