ホームページ >Java >&#&はじめる >Javaのヒープメモリとスタックメモリの詳細な分析

Javaのヒープメモリとスタックメモリの詳細な分析

王林
王林転載
2019-12-26 17:40:252482ブラウズ

Javaのヒープメモリとスタックメモリの詳細な分析

1. 概要

Java には、スタック メモリとヒープ メモリの 2 種類のメモリがあります。

2. ヒープ メモリ

1. ヒープ メモリとは何ですか?

ヒープ メモリは Java メモリの一種です。その機能は、Java でオブジェクトと配列を保存することです。新しいオブジェクトを作成するか配列を作成すると、ヒープ メモリのセクションが開かれます。ストレージ。

2. ヒープ メモリの特徴は何ですか?

最初のポイント: ヒープは実際にはパイプラインとみなすことができ、チケットを購入するために列に並ぶ状況に似ているため、ヒープ メモリの特性は次のとおりです: 先入れ、先出し、最後in、last out、つまり、あなたが最初に並びます、わかりました、あなたが最初にチケットを買います。

2 番目のポイント: ヒープはメモリ サイズを動的に割り当てることができ、実行時に動的にメモリを割り当てるため、ライフタイムを事前にコンパイラに伝える必要はありませんが、欠点は、メモリを動的に割り当てる必要があることです。実行時に割り当てられるため、アクセス速度が遅くなります。

3. 新しいオブジェクトはどのようにヒープに割り当てられるのでしょうか?

Java 仮想マシンの自動ガベージ コレクターによって管理されます。

無料ビデオ チュートリアルの共有: Java ビデオ チュートリアル

3. スタック メモリ

1. スタック メモリとは

スタック メモリこれは Java の別のタイプのメモリであり、主に基本型変数やオブジェクト参照変数などのプログラムを実行するために使用されます。

2. スタックメモリの特徴

第一点: スタックメモリはミネラルウォーターのボトルのようなもので、何かを入れると最初に入れたものは底に沈み、特徴としては、先入れ後出し、後入れ先出しです。スタック内のデータのサイズと有効期間は一定でなければなりません これは確実ですが、柔軟性に欠けます

3. スタック メモリ割り当てメカニズム

スタック メモリは一次キャッシュと呼ばれ、自動的にリサイクルされますガベージ コレクターによる

#4. データ共有

例:

int a = 3;
int b = 3;

処理の最初のステップ:

1. コンパイラーは最初に int a = を処理します。 3;

2.変数 a

3 への参照を作成します。スタックを検索して、値 3

4 があるかどうかを確認します。見つからない場合は、3 を格納します。 a は 3

2 番目のステップの処理:

1 を指します。b=3

2 を処理します。変数 b

3 への参照を作成します。それを見つけます。それを直接割り当てます。

3 番目のステップは変更です:

Next

a = 4;

上記のメソッドと同じ

a の値が変更され、a は次のポイントを指します。 4 となり、b の値は変わりません。

PS: 2 つのオブジェクトがある場合は異なります。オブジェクトは同じ参照を指します。一方が変更されると、他方も変更されます。

4. スタックとヒープの違い

JVM はスタックベースの仮想マシンであり、新しく作成されたスレッドごとにスタックを割り当てます。つまり、Java プログラムの場合、その動作はスタックの動作によって完了します。スタックはスレッドの状態をフレームに保存します。 JVM はスタック上で 2 つの操作 (フレーム単位でのプッシュ操作とポップ操作) のみを実行します。

相違点:

1. ヒープ メモリは、new によって作成されたオブジェクトと配列を保存するために使用されます。

2. スタック メモリは、メソッドやローカル変数などを格納するために使用されます。

3. ヒープは先入れ、先出し、後入れ、後出しです。

4. スタックは後入れ、先出し、先入れ、後出しです。

同じ点:

1. どちらも Java メモリの一種です。

2. システムは自動的にリサイクルしますが、ヒープ メモリの場合は、通常、開発者が自動的にリサイクルします。

その他の関連記事とチュートリアルを共有します:

Java ゼロベースの概要

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

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。