理解のJavaスタックメモリ

 

Java(登録商標)、変数はメモリに割り当てられている
1)クラス変数(静的変数が変更された):それは、ヒープ、高速アクセスのためにスタックに格納されているヒープメモリアドレスにメモリを開くようにプログラムがシステムをロードします。-静的変数のライフサイクル全体までの「システム」閉じ
、新しいキーワードを使用する場合、システムは必ずしも配分するために、クラスのインスタンスとしてヒープ変数(連続したスペースを開いていないのjava:2)インスタンス変数を。 )とヒープメモリアドレスは、スタック変数の数字の長い文字列の観点から特徴付けるためにハッシュアルゴリズムによって散乱による「物理的な場所。」ライフサイクルのインスタンス変数-インスタンス変数の参照が失われたとき、リサイクルコラム「リスト」としてGC(ガベージコレクタ)があるが、すぐにヒープメモリ解放しない
3)ローカル変数:ローカル変数によります。この方法で宣言され、または(例えばforループなど)でのスニペット、それが開放するヒープメモリ上で実行する時間です、当局変数がスコープの外に出ると、メモリはすぐに解放されます

ヒープ・メモリ
ヒープとは何ですか?
Javaヒープメモリはメモリであり、その役割は、我々は新しい配列やオブジェクトを作成し、彼らはそれにヒープメモリの一部のスペースを開きますときのために、Javaオブジェクトと配列を格納することですストレージ。
ヒープメモリどのような機能ですか?
最初のポイント:スタックは、実際のパイプラインと同様に見ることができ、または状況は通常、ほとんどのチケットのためにキューに入れに行くので、ヒープメモリがによって特徴付けられる:FIFOは、後方の後に、それはあなたまず、あなたの最初の行は良いですチケットを買います。
第二の点:ヒープメモリのサイズを動的に割り当てることができ、生存率は、それがメモリの実行時の動的な割り当てであるため、事前にコンパイラに指示する必要はありませんが、欠点があること、実行時のアクセス速度でメモリの低速の動的な割り当てが原因であります。
ヒープ内の新しいオブジェクトを割り当てる方法?
自動ガベージコレクタのJava仮想マシンによって管理されます。

スタックメモリ
スタックメモリは、別のJavaメモリは、主に手順を実行するために使用される、例えば:変数のオブジェクト参照変数と基本タイプ
スタックメモリ備え
最初のポイントを:スタックメモリは、水のボトルのようなものです、それを埋めます最後のアウト、LIFO:それはによって特徴付けられるように、第1底に沈むにMaは、何かに
第二のポイント:アクセス速度がヒープよりも高速で、登録した後、スタックデータを共有することができるが、欠点は、決定されなければならないスタックのサイズおよび生存データ、柔軟性が不足しているということである
スタックメモリ割り当て機構
自動的ガベージコレクタにより回収スタックメモリキャッシュと呼ばれることができ、
データ共有

スタックとヒープの違い

JVMは、新しく作成されたスレッドのJVMはつまり、Javaプログラムのために、完了するために、スタックの操作を介して実行され、スタックに割り当てられているスタックベースの仮想マシンです。スレッドの状態を保存したフレーム単位スタック。2つだけの操作のJVMスタック:プッシュとポップ操作のフレームユニット。

差:
1)新規のアレイによって作成されたオブジェクト格納するために使用されるヒープメモリ
。2)またはローカル変数を格納するために使用されるスタックメモリなどの方法
3)後方の後に、FIFOスタックである。
4)スタックをアウト前進された後。 、LIFO
。違いの5)共有:

スタックメモリは、スレッドにプライベートである
すべてのスレッドで共有されているヒープメモリ

宇宙 
スタック領域は、ヒープのサイズよりもはるかに小さいです。

 

 

参考:

https://blog.csdn.net/weixin_37618354/article/details/80239219

 

おすすめ

転載: www.cnblogs.com/sea-stream/p/11361464.html