現在のスレッドによって実行されたバイトコードの行番号インジケーター。
はスレッドに対してプライベートであり、スレッドと同じ ライフサイクル を持ちます。 ローカル変数テーブル、オペランドスタック、ダイナミックリンクリスト、メソッド出口およびその他の情報を保存するために使用されます。
ローカル変数テーブルの格納内容:
基本データ型(boolean、byte、char、short、int、float、long、double)
オブジェクト参照(定数に格納されるシンボリック参照とは異なります) pool )
returnAddress型(バイトコード命令のアドレスを指す)
64ビットlongのlong型とdouble型のデータは2つのローカル変数空間(スロット)を占有し、残りは1つのスロットを占有します。
2 つの例外:
StackOverflowError: スレッドによって要求されたスタックの深さ > 仮想マシンによって許可される深さ
OutOfMemoryError: 動的拡張中に十分なメモリを適用できません
仮想マシン スタックと似ていますが、違いは、ネイティブ メソッド スタックがネイティブ メソッドを提供するのに対し、仮想マシン スタックは Java メソッドを提供することです。
すべてのスレッドによって共有され、オブジェクト インスタンスと配列を保存します。
「GC ヒープ (ガベージ コレクション ヒープ)」とも呼ばれるガベージ コレクターによって管理されるメイン領域
には、新世代 (Eden スペース、From Survivor スペース、To Survivor スペース) と古い世代が含まれます。
複数のスレッドプライベート割り当てバッファ (スレッドローカル割り当てバッファ、TLAB) を分割できます。
物理的には不連続であっても、論理的には連続である場合があります。
拡張可能: -Xmx および -Xms コントロール。 -Xmx 最大ヒープ メモリ サイズ、-Xms 初期ヒープ メモリ サイズ。
インスタンスの割り当てを完了するために使用可能なメモリがヒープ内になく、拡張できない場合 - OutOfMemoryError
もすべてのスレッドで共有され、使用されます。仮想マシンによってロードされた クラス情報、定数、静的変数、ジャストインタイム コンパイラによってコンパイルされたコード、およびその他のデータ を保存します。
「永久世代」とも呼ばれますが、本質的には同等ではありません。
永続世代の上限は -XX:MaxPermSize です。
はメソッド領域の一部です。
JDK1.4に新たに追加されたNIO(新しい入力/出力)クラスは、ネイティブ関数ライブラリを使用して直接割り当てることができるI/Oメソッドを導入します。ヒープメモリ。 Java ヒープ サイズ (-Xmx) によって制限されないため、各メモリ領域の合計が物理メモリ制限を超え、動的拡張中に OutOfMemoryError が発生する可能性があります。
概要:1.
Java コレクション フレームワークの学習メモ3. Javaトランザクション管理学習JDBCサンプルコードの詳細解説
以上がJVM学習Javaランタイムデータ領域の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。