Java では、実行中のプログラムのすべてのインターフェイス、クラス、オブジェクト、変数、およびメソッドは、コンピューターのメモリ内の異なる場所に保存されます。ヒープは、実行時に変数、メソッド、クラスの値が保存されるメモリ領域の一部です。その割り当ては動的に行われ、アプリケーションのニーズに基づいて拡大または縮小できます。一方、参照変数、メソッド、クラスの名前はスタックメモリ領域に格納されます。ただし、何らかの理由でその割り当てが正しく処理されないと、この記事で説明するメモリ エラーが発生する可能性があります。
プロセスが開始されるたびに、固定スタック サイズが自動的に定義されます。各メソッド呼び出し中に、呼び出しフレームが呼び出しスタック上に作成され、メソッド呼び出しが終了するまで存続します。コンピューターのメモリのスタック領域に新しいスタック フレームを入れる余地が残っていない場合、StackOverflowError が発生します。
次の例は StackOverflowError を示しています
リーリー ###出力### リーリー
例 1 のコードの問題は、6 行目と 10 行目が終了しないことです。ただし、上記の例では、プログラムを終了し、「mult」に格納されている値を出力するステートメントを指定しました。
JVM の「-Xmx」および「-Xms」プロパティによってヒープのサイズが決まります。このサイズは値の保存に影響します。ヒープ メモリの一部にスペースが不足しているために JVM で値の割り当ての問題が発生すると、
OutOfMemoryError が発生します。例 1 次の例は、OutOfMemoryError を示しています。
リーリー ###出力### リーリー
-Xmx および -Xms JVM オプションを使用してヒープ サイズを増やすことができます
次の例は、try ブロックと catch ブロックを使用して OutOfMemoryError を処理する方法を示しています。
リーリー ###出力### リーリー ###結論は###以上がJava のヒープおよびスタック メモリ エラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。