JVM(C)仮想マシンスタックの概要と記憶ユニットのスタック

VMスタックの概要

  VMは、背景に表示され、スタック:

    そのため、クロスプラットフォームの設計で、Javaの命令はスタックに基づいて設計されています。異なる別のCPUアーキテクチャが、それはレジスタベースとして設計されていません

    クロスプラットフォームの利点:小さな命令セット、コンパイラは、実装が容易である、欠点は、同じ機能の必要性をより多くの命令を実行し、パフォーマンスの低下です。

    ヒープは、記憶部である一方、スタックユニットは、実行されています

      スタックプログラム、すなわちどのようにプログラムを実行する、またはどのように、すなわち、どのようにデータを置くために、データストレージの問題を解決するため、ヒープ、データに対処するために、操作上の問題を解決するために、その上に

    ローカル変数とアドレスにはいくつかのいくつかの言及はまた、スタック上に配置することができます

  Java仮想マシンのスタックはどのようなものです:

    Java仮想マシンのスタックは、Javaスタックとして知られる以前にも、各スレッドは、その内部のスタックフレームの1セーブで(スタックフレーム)、メソッド呼び出しスタックフレームとの対応を、作成した仮想マシンのスタックを作成します。

    それはプライベートなスレッドです

  ライフサイクル:

    スレッドと一致して

  役割:

    Javaプログラムを実行している担当のローカル変数、彼の保存方法(8つの基本データ型、オブジェクト参照アドレス)、部分的な結果、およびメソッド呼び出しと復帰に参加

      2つのカテゴリ変数のポイントシステムがあります。

      (属性と呼ばれる)のメンバ変数VSローカル変数

      基本的なデータ変数VS参照型の変数(ベース、アレイ、インターフェイス)

 

   特長は、スタック:次ぐプログラムカウンタアクセス速度に、ストレージを割り当てるための迅速かつ効率的な方法であります

       JVM Javaスタック、2つだけの直接操作

          図1に示すように、スタック内の各メソッドの実装を伴います

          スタック作業の終了後2、

       ガベージコレクションは、それを積み重ねるための問題ではありませんが、そこにOOM

  例外のスタックが発生する可能性があります。

        Java仮想マシンの仕様は、Javaスタックサイズは、動的または固定されていることができます。だから、2つの異常に対応します

        図1に示すように、固定サイズのスタックJava仮想マシンを使用することは、Java仮想マシンの容量の各スレッドは、独立して作成時に選択することができます。スレッドスタックの割り当て要求が許可されたJava仮想マシンより大きな容量の容量を超えた場合は、例外がスローされるにStackOverflowErrorを

        十分なメモリには適用されませ拡大しようとしながら、2、Java仮想マシンのスタックのスケーラビリティ、そしてOutOfMemoryErrorが発生を投げます

 

  -Xss:スタックサイズを設定します。

  

 

 

 

スタック記憶部

  どのようなスタック預金?

 

    内部スレッド、スタック、スタックデータはスタックフレームのフォーマット中に存在するました

    この方法では、各実行スレッドは、各スタックフレームを有しています

    スタックフレームは、メモリ領域である方法の実行中に、各種データを保持するデータの集合です。

        OOPの基本的な概念:クラス、オブジェクト、

        タイプの基本構造:フィールド(属性フィールド、フィールド)、メソッド

  動作原理をスタック:

    2つだけの直接操作のJVMスタック、すなわち、スタック及びスタックフレームPOP上のプッシュプッシュは、LIFOに従っ

    イベントスレッド、時点は、唯一のアクティブなスタックフレーム、スタックフレームが現在実行されている方法と呼ばれる現在のスタックフレーム(現在のフレーム)が存在することになる、対応する方法は、現在の方法(現在の方法)、この定義であります現在のクラスのメソッドは、クラス(現在のクラス)です。

    バイトコード命令の実行エンジンは、現在のスタックフレームのためにのみ作動します

    現在の方法は、他のメソッドを呼び出す場合、新しいスタックフレームを対応する新しい現在のスタックフレームと呼ばれるスタックの最上部、上に作成されます。

    スタックフレームは、異なるスレッドが別のスレッドのスタックフレームを呼び出すことはできませんスタックフレーム[アリJVMプロセスは不合理なリソースを呼び出すことができます]があることが、互いを参照することはできません含まれてい

    現在の方法は、他のメソッドを呼び出す場合、この方法は、スタックフレームに実行するこの方法の結果の前に現在のスタックフレームのリターンの機会を返し、その後、スタックフレームを行う前に、現在のスタックフレームを廃棄する仮想の機会は、現在のスタックフレームになります。

    Javaメソッドの2つの方法が復帰命令を使用して、返します正常に戻る機能があり、他がスローされ、使用に、スタックフレームがポップされる原因になりますされていない方法

おすすめ

転載: www.cnblogs.com/Timeouting-Study/p/12511904.html