ホームページ  >  記事  >  Java  >  Javaのスタックメモリとヒープメモリの違いは何ですか?

Javaのスタックメモリとヒープメモリの違いは何ですか?

王林
王林オリジナル
2020-05-17 15:21:514737ブラウズ

Javaのスタックメモリとヒープメモリの違いは何ですか?

スタック メモリとヒープ メモリの違い:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。