スタック差

藏色散人
藏色散人オリジナル
2019-06-03 14:07:3027385ブラウズ

スタック差

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

1. スタック領域割り当ての違い:

1. スタック (オペレーティング システム): 関数パラメータ値、ローカル変数値などを保存するために、オペレーティング システムによって自動的に割り当ておよび解放されます。その操作方法は、データ構造におけるスタックに似ています;

2. ヒープ (オペレーティング システム): 通常、プログラマによって割り当ておよび解放されます。プログラマが解放しない場合は、プログラマによって再利用される場合があります。プログラム終了時の OS の割り当て方法も同様です。

2. スタック キャッシュ メソッドの違い:

1. スタックは 1 次キャッシュを使用します。通常、スタックは呼び出されたときにストレージ領域にあります。呼び出しが完了した直後に解放;

2. ヒープは 2 次キャッシュに保存され、ライフ サイクルは仮想マシンのガベージ コレクション アルゴリズムによって決定されます (リサイクルできるわけではありません)。孤立オブジェクトになると)。したがって、これらのオブジェクトを呼び出す速度は比較的遅くなります。

ヒープ: メモリには、参照データ型が保存されます。参照データ型のサイズは決定できません。ヒープは、実際には、メモリ内の散在領域を使用するリンク リスト構造の記憶領域です。ヒープは次のように決定されます 参照型のサイズは直接決定されます 参照型のサイズの変更はヒープの変更に直接影響します

スタック: メモリに格納される値型ですサイズ2Mです。超えるとエラーが報告され、メモリがオーバーフローします

3. スタックのデータ構造の違い:

ヒープ(データ構造) ): ヒープは、次のようにツリーとみなすことができます: ヒープ ソート;

スタック (データ構造): 先入れ後出しのデータ構造。

機能: 先入れ後出し

先入れ後出しの場合、Linklist の基礎となる実装はリンク リスト構造であるため、Linklist を使用して何を探索するか先入れ後出し

コードは次のとおりです:

package com.zking.list;
 
import java.util.LinkedList;
 
public class Linklisttest {
 
public static void main(String args[]) {
LinkedList ll = new LinkedList();
for (int i = 0; i < 5; i++) {
ll.addFirst(i);
}
 
ll.removeFirst();
 
for (Object object : ll) {
System.out.println(object);
}
 
}
 
}

実行結果:

スタック差

によるとこの単純な例では、for ループでコレクションにデータを追加する順序が 0、1、2、3、4、

であることがわかります。delete メソッドが実行されると、 4 が削除され、最終的な走査結果は 3、2、1、0 になります。

したがって、これはスタックの特性 (先入れ後出し) を反映しています。 。

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

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