スタック メモリとヒープ メモリの違い:
1. スタック メモリは、基本的なタイプの変数と参照変数を格納するために使用されます。ヒープ メモリは、基本的なタイプの変数と参照変数を格納するために使用されます。Java でオブジェクトを格納するには、メンバー変数、ローカル変数、クラス変数のいずれであっても、オブジェクトが指すオブジェクトはヒープ メモリに格納されます。
(ビデオチュートリアルの推奨: java ビデオ)
2. スタック メモリは単一のスレッドに属します。各スレッドにはスタック メモリと、そこに格納される変数があります。つまり、スタック メモリはスレッドのプライベート メモリとして理解でき、ヒープ メモリ内のオブジェクトはすべてのスレッドから参照できます。ヒープ メモリ内のオブジェクトには、すべてのスレッドからアクセスできます。
3. スタック メモリにメソッド呼び出しやローカル変数を保存するための空き領域がない場合、JVM は java.lang.stackoverflowerror エラーをスローします; ヒープ メモリにメソッド呼び出しやローカル変数を保存するための空き領域がある場合、JVM は java.lang.stackoverflowerror エラーをスローします。生成されたオブジェクトを生成すると、JVM は java.lang.outofmemoryerror エラーをスローします。
3. スタック メモリはヒープ メモリよりもはるかに小さいため、再帰を使用するとスタックがすぐにいっぱいになってしまいます。 -Xss は各スレッドのスタックメモリのサイズを設定します。 -Xms は先頭のヒープメモリのサイズを設定できます。
概要:
JVM のヒープとスタックは異なるメモリ領域に属し、異なる目的に使用されます。スタックはメソッド フレームやローカル変数を保存するためによく使用されますが、オブジェクトは常にヒープ上に割り当てられます。スタックは通常、ヒープよりも小さく、複数のスレッド間で共有されませんが、ヒープは JVM 全体のすべてのスレッドによって共有されます。
推奨チュートリアル: Java 開発の入門
以上がJavaのスタックメモリとヒープメモリの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。