1.8に基づいて、JVMのメモリモデル

JVMのメモリ・モデル

簡単なモデル

  • jdk1.8前リスト項目
  • jdk1.8後
    ここに画像を挿入説明
  • 二つのバージョンの差
    • メタデータ領域、非置換永久生成方法エリア。メタスペース恒久的性質と類似するが、メソッド領域JVM仕様で達成されます。しかし、それに代わって元と永久スペースの最大の違い:メタデータ空間は、仮想マシンではありませんが、ローカルメモリを使用します

第二に、詳細領域

1.プログラムカウンタ

  • 小さなメモリ空間がある、現在のスレッドを実行するバイトコードの行番号インジケータ、各スレッドは、別々のプログラムカウンタを有していなければならない、メモリのこのタイプは、「スレッドプライベート」メモリとして知られています。
  • 実行中のJavaメソッドは、カウンタが記録されているアドレス(現在の命令のアドレス)仮想マシンのバイトコード命令それでももしネイティブ方式、またはnull
  • このメモリは、仮想マシンで任意の領域のOutOfMemoryErrorの状況を指定していない唯一のものです。

2. Java仮想マシン・スタック

  • 記述メモリモデルJavaメソッドが実行情報を格納するためのローカル変数テーブルを行いながら積層(スタックフレーム)を作成する各フレーム、オペランドスタック、動的リンク、方法輸出のため
  • 各メソッド呼び出しの実行が完了するまでは、それが中にスタックのスタックを押し出すように、仮想マシンのスタックフレームに対応します
  • メソッド呼び出しスタックフレームは、メソッドの終了と破壊と、作成されたと - それは正常または異常終了を完了するかどうか(メソッド内でキャッチされない例外をスローする)メソッドは終了としてカウントされます。
    ここに画像を挿入説明

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

  • この方法は、ローカルエリアおよびJavaスタック効果と類似しているサービス方法を実行するJava仮想マシン・スタックとの間の差、及びローカルネイティブメソッドスタック法、比較サービスであります

4.ヒープ

  • 共有メモリ領域のスレッドがあり、オブジェクトとクラスと静的変数の配列の作成 Javaヒープメモリに格納されているが、ガベージコレクタは、メモリのガベージコレクションの重要な領域です。現代の世代のコレクションのアルゴリズムを使用してVMので、JavaのヒープGCなどの観点からも、に分けることができます。新世代と(サバイバーへサバイバー地区と地域からエデン地区、)古い年
    ここに画像を挿入説明

定数プール

  • 永久世代から剥離1.7文字列定数プール、ヒープ領域に格納されていますその理由は、永久方法が存在することになる定数プール領域に格納されているパフォーマンスの問題とメモリオーバーフロー
  • そして、コンパイラがの参照を生成し、さまざまなリテラルのシンボル

6.メタデータ領域

  • この方法は、地域と永久自然の代わりにメタデータ領域に実装されています。ストアへのメソッド領域クラスの仮想マシンの負荷の情報、静的変数、定数、およびその他のデータ
  • ほとんどのクラスのソース・データがローカルメモリに割り当てられる(MaxMetaspaceSize)パラメータは、メタデータ領域サイズに割り当てられたローカルメモリを制限することができます
  • リアルタイムモニタリングと空間の賛成でガベージコレクションの周波数を調整し、待ち時間を短縮。

三、String.inter()メソッド

  • この方法は、ネイティブの方法ですが、書かれたコメントは非常に明確です。「現在の文字列の定数プールがある場合、それは直接あなたがこの文字列定数プールを持っていない場合は一定のプールにこの文字列を満たした後、現在の文字列に戻り、その後、返されます。」
公開された20元の記事 ウォンの賞賛0 ビュー257

おすすめ

転載: blog.csdn.net/white_zzZ/article/details/103940725