Java仮想マシンのメモリ領域モデル

プログラムカウンタプログラムカウンタ(プログラムカウンタレジスタ)のプライベートメモリ領域を通し、小さなメモリ空間であり、それは現在のスレッドによって実行される行番号指示子バイトコードとみなすことができます。各スレッドは、スレッドがJavaメソッドを実行している場合、カウンタは、実行中の仮想マシンのバイトコード命令のアドレスを記録し、独自のプログラムカウンタを持って進展がネイティブメソッド、プログラムカウンタの場合空(Undifined)。このメモリ領域は、地域のOutOfMemoryError Java仮想マシン仕様でどのような状況のために用意されていませ唯一のものです。仮想マシンのスタック(VMスタック)仮想マシンのスレッドスタックがプライベートで、それが行われたJavaメモリモデルの方法を説明しますローカル変数テーブルを格納するために実行しながら、それぞれの方法には、スタックフレーム(スタック・フレーム)を作成し、操作手順が完了するまでオペランドスタック、動的にリンクされた、及び他の情報エクスポートするための、各メソッド呼び出しは、それがプロセス・スタック・フレームに対応する仮想マシンスタックにプッシュし、ポップされます。VMのスタックフレームは、局所変数テーブルが必要と方法を入力するとき、通常、「スタック」、コンパイル時に作成されたローカル変数テーブルを割り当てられた必要なメモリ空間と呼ばれる、比較的よく知られていますスタックフレームに割り当てられたローカル変数空間が明確に定義されている方法は、この方法は、ローカル変数テーブルのサイズの動作中に変化しません。StackOverflowError:仮想マシンのスタックは、2つの例外があり、スレッド・スタックの深さは、再帰的な方法は、OutOfMemoryErrorを呼び出した場合は特に、要求された仮想マシンの許容深さよりも大きいです:仮想マシンのスレッドスタック領域の要件でもダイナミックな展開が残った後、アプリケーションによって満たすことができません満たすことができない、それはOutOfMemoryErrorのネイティブメソッドスタック(ネイティブメソッドスタック)にネイティブメソッドスタックをリードし、仮想マシンに似スタックが、地元の方法を提供しますが、一部の仮想マシンは、この2つの領域を組み合わせます。ネイティブメソッドは、例外が同じ仮想マシンのスタックにスローされた場合にスタックします。一般に、共有メモリ領域のヒープ(ヒープ)ヒープは、作成されたすべてのスレッドによって共有Java仮想マシン管理におけるメモリの最大部分は、仮想マシンの起動時に、ヒープの役割は、オブジェクト・インスタンスを格納することです。ヒープは、ガベージコレクタによって管理されるメイン領域であり、従ってしばしばも呼ばれる「GCヒープ。」メモリの回復の観点から、集電体に基本的に世代コレクションアルゴリズムを使用してため、新世代と旧時代:だからヒープもに細分化することができます。セグメンテーションを続行に分けることができます:サバイバースペース、ビューの点からメモリの割り当てには、サバイバースペースから、Eden領域、ヒープ・スレッドの寄与は、プライベートuは(地方交付スレッドバッファを割り当てる複数のスレッドに分割することができバッファ、TLAB)。スタックであれば、缶が論理的に連続しており、-Xms -Xmxパラメータは、ヒープの最大および最小サイズを制御するように、物理的な空間に不連続であってもよいです。スペースヒープのサイズは、OutOfMemoryErrorのスローさに満足していないです。仮想マシンを格納するためのクラス情報領域法(方法面積)は、定数、静的変数、JITコンパイルされたコード及び他のデータをロードされています。Java仮想マシン仕様方法は、スタックのロジック領域部として説明するが、それは非ヒープ(非ヒープ)という別名を有しています。同じ方法では、OutOfMemoryErrorが発生面積がスローされます。リテラルシンボルと領域の一部が種々の参照ゾーンを生成する過程でコンパイル格納するために使用されるクラスがロードされた後、動作時定数プールエリアに方法のこの部分が格納されます。それだけでなく、生産、コンパイル時定数では、明確にする必要があり、そのような動作中のStringクラスのインターン()メソッドとして定数プール定数、新しい髪を生成します。ダイレクトメモリ(ダイレクト・メモリ)マシンのメモリを直接実行しているJava仮想マシンのデータ領域の一部ではありませんが、それはヒープからデータを複製し、Javaネイティブ・スタック避けるので、それは非常に、いくつかのシナリオでは、パフォーマンスを向上させることができます。ダイレクトメモリはまた、OutOfMemoryErrorが発生を投げることができます。エリア)クラス情報は、仮想マシンは、定数、静的変数、JITコンパイルされたコード及び他のデータをロードされた格納するために使用されます。Java仮想マシン仕様方法は、スタックのロジック領域部として説明するが、それは非ヒープ(非ヒープ)という別名を有しています。同じ方法では、OutOfMemoryErrorが発生面積がスローされます。リテラルシンボルと領域の一部が種々の参照ゾーンを生成する過程でコンパイル格納するために使用されるクラスがロードされた後、動作時定数プールエリアに方法のこの部分が格納されます。それだけでなく、生産、コンパイル時定数では、明確にする必要があり、そのような動作中のStringクラスのインターン()メソッドとして定数プール定数、新しい髪を生成します。ダイレクトメモリ(ダイレクト・メモリ)マシンのメモリを直接実行しているJava仮想マシンのデータ領域の一部ではありませんが、それはヒープからデータを複製し、Javaネイティブ・スタック避けるので、それは非常に、いくつかのシナリオでは、パフォーマンスを向上させることができます。ダイレクトメモリはまた、OutOfMemoryErrorが発生を投げることができます。エリア)クラス情報は、仮想マシンは、定数、静的変数、JITコンパイルされたコード及び他のデータをロードされた格納するために使用されます。Java仮想マシン仕様方法は、スタックのロジック領域部として説明するが、それは非ヒープ(非ヒープ)という別名を有しています。同じ方法では、OutOfMemoryErrorが発生面積がスローされます。リテラルシンボルと領域の一部が種々の参照ゾーンを生成する過程でコンパイル格納するために使用されるクラスがロードされた後、動作時定数プールエリアに方法のこの部分が格納されます。それだけでなく、生産、コンパイル時定数では、明確にする必要があり、そのような動作中のStringクラスのインターン()メソッドとして定数プール定数、新しい髪を生成します。ダイレクトメモリ(ダイレクト・メモリ)マシンのメモリを直接実行しているJava仮想マシンのデータ領域の一部ではありませんが、それはヒープからデータを複製し、Javaネイティブ・スタック避けるので、それは非常に、いくつかのシナリオでは、パフォーマンスを向上させることができます。ダイレクトメモリはまた、OutOfMemoryErrorが発生を投げることができます。


おすすめ

転載: blog.51cto.com/14360146/2429483