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

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

王林
王林オリジナル
2019-11-13 11:35:423295ブラウズ

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

Java スタック

Java スタックは常にスレッドに関連付けられています。スレッドが作成されるたびに、JVM は対応する Java を作成します。 stack には、この Java スタック内の複数のスタックが含まれます。これらのスタック フレームは、各メソッドに関連付けられます。メソッドが実行されるたびに、いくつかの「内部変数」(内部で定義されたメソッド変数) を含むスタック フレームが作成されます。オペレーションスタック」や「メソッド戻り値」などの情報が表示されます。

Java ヒープ

ヒープは、Java オブジェクトが保存される場所です。これは、JVM が Java オブジェクトを管理するためのコアの記憶領域です。ヒープは、Java プログラマが持つべきものです。これはアプリケーションとメモリに最も密接に関係するストレージ領域であるため、最も懸念されます。

ヒープに格納されるすべての Java オブジェクトは、オブジェクトのクラスのコピーとなり、親クラスから継承されたものを含むすべての非静的プロパティがコピーされます。

ヒープはすべての Java スレッドによって共有されるため、ヒープにアクセスするには同期の問題に注意する必要があり、メソッドと対応する属性は一貫性を確保する必要があります。

#メモリは、メソッド領域 (静的領域メソッドとも呼ばれます)、スタック、ヒープの 3 つの領域に分割できます。

1. メソッド領域

ストアすべてのクラス (つまり、クラス内の関数もこの領域に格納されます) と静的変数 メソッド領域には、プログラム全体のクラスや静的変数などの要素のみが格納されます。ヒープと同様に、すべてのスレッドで共有できます。

2. スタックメモリ:

すべてのローカル変数が保存され、変数が属するスコープが終了すると、変数は自動的に解放されます。

3. ヒープ メモリ

# にはエンティティ、配列、オブジェクト (配列はオブジェクト) が格納され、各エンティティには最初のアドレス値があります。新しいものはすべてヒープ メモリ内にあり、デフォルトで初期化されます。手動リリースや自動ガベージ コレクションは必要ありません。

推奨チュートリアル:

Java チュートリアル

以上がJavaのスタックとヒープの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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