どのようなデータ領域どこJVMランタイム

「Java仮想マシンの深い理解」から

ここに画像を挿入説明

1.スレッド共有データ領域

1.1メソッドゾーン

また、それぞれの共通のスレッドに属する、非ヒープとして知られ、クラス情報の保存は、定数、静的変数、インスタントコンパイルされたコードだけでなく、ロードされた実行時定数プールを

  1. JDK1.2〜JDK1.6ホットスポットは、永久的な領域の生成方法を実装しました。
  2. 永久的な除去世代を開始JDK1.7、シンボルテーブルは、ネイティブヒープに移動され、文字列やクラス参照は、Javaヒープに移動されます。
  3. JDK1.8はメタスペースに置き換えます。

1.2ヒープメモリ

Javaヒープ、JVMのメモリ管理の最大の作品は、基本的にすべてのオブジェクトのインスタンスを持つストレージ。メインエリアは、GCの管理です。

  1. サバイバーにサバイバーからJavaヒープと旧世代に新しい世代、またはエデン、。
  2. Javaヒープは、物理的に連続したメモリ空間にすることはできません。
  3. これは、複数のスレッドプライベート割り当てられたバッファに分けることができます。

データ領域の単離をスレッド2

2.1 Java仮想マシンのスタック

Java仮想マシンのスレッドスタックは、各メソッドの実装は、店舗情報のローカル変数テーブルに使用するスタックフレーム、オペランドスタック、動的リンク、メソッドの輸出を作成するプライベートライフサイクルに属し、同じ時間を通します。

  1. ローカル変数テーブル:参照型、RETURNADDRESS(バイトコード命令のアドレスを指す)の既知のコンパイルの基本的なタイプを格納します。長いとダブルテイクローカル変数空間データの2種類の、他の種類の一つだけを使用します。
  2. スペースでもローカル変数テーブルが処理動作中にローカル変数テーブルのサイズを変更しないで、コンパイル時に決定されている必要。

2.2ネイティブメソッドスタック

ネイティブ方式サービスのための仮想マシンの役割、JavaメソッドのJava仮想マシン・スタックの実行(バイトコード)、ネイティブメソッドスタックのネイティブメソッドスタックおよびスタックに似ています。

仮想マシンとネイティブメソッドスタックスタックにはいくつかの仮想マシンが合併しました。

2.3プログラムカウンタ

小さなメモリ空間は、現在のスレッドバイトコードは、行番号インジケータによって実行されます。マルチスレッドのJava仮想マシンは、順番に切り替えて割り当てられたプロセッサの実行時間は、スレッドによって達成されます。

公開された56元の記事 ウォンの賞賛3 ビュー1191

おすすめ

転載: blog.csdn.net/qq_40788718/article/details/103172169