Java 仮想マシンの基本構成:
(ビデオ チュートリアルの共有: java コース)
クラス ローディング サブシステム、ランタイム データ領域 (JVM メモリ モデル)、実行エンジン、ローカル メソッド インターフェイス
クラス ローダー:
は主にコンパイルされた .class ワードを担当します。セクション コード ファイルは、ランタイム データ領域で使用するためにランタイム データ領域にロードされます。
実行時データ領域 (JVM メモリ モデル):
1. ヒープ: 主にオブジェクトを格納し、複数のスレッドによって共有されます (ガベージ コレクションのメイン領域)。
2. メソッド領域: 主に定数、静的変数、クラスのメタデータ (クラス名、メソッド、フィールド、バージョンなど) を格納します。
3. スレッド スタック: メソッド パラメーター、ローカル変数、中間操作結果、オブジェクト参照を保存し、他のモジュールが動作するために必要なデータなどを提供します。
4. ローカル メソッド スタック: ローカル メソッド スタックは、仮想マシンによって使用されるネイティブ メソッドを提供します。
5. プログラム カウンター: 現在のスレッドによって実行されるバイトコードの行番号インジケーターで、ローカル メソッドの実行時には null になります。
実行エンジン:
実行エンジンは、Java バイトコードの JVM 実行の中核となるもので、実行方法は主に解釈実行、コンパイル実行、適応最適化実行、ハードウェアチップ実行に分かれます。
ローカル メソッド インターフェイス:
非 Java 言語で実装されたメソッド インターフェイス。
jdk1.8 jvm メモリ構造図:
JVM メモリ モデル 1.8 より前と 1.8 の違い:
主な違い:
1. メタデータ領域は永続世代を置き換えます。メタスペースの本質は永続世代の本質と似ており、どちらも JVM 仕様のメソッド領域の実装です (追記: メソッド領域は Java 仮想マシンの仕様であり、永続世代とメタスペースは両方ともメソッド領域の実装)。
2. メタデータ領域は仮想マシンからローカル メモリに移動されます。
3. jdk1.8 の定数プールと静的変数は、ストレージのためにヒープに移動されました (論理的には、依然としてメソッド領域に属します)
関連する推奨事項: Getting Started Java を使用した場合 #
以上がJava 仮想マシンの基本コンポーネントの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。