ホームページ  >  記事  >  Java  >  jvm Java メモリ領域の詳細な紹介

jvm Java メモリ領域の詳細な紹介

零下一度
零下一度オリジナル
2017-06-25 09:50:431216ブラウズ
JVM 仮想マシンが実行するときに使用する必要があるメモリ領域。大まかに言うと、ヒープとスタックは、単に比較的一般的な用語ではありません。
まず、写真1:

一般に、
Javaメモリモデルです
メモリモデルは、ヒープメモリ(ヒープ)とメソッド領域(非ヒープとも呼ばれる)とスタックに分かれています
ヒープは、若い世代 (Young) と古い世代 (old/Tenured) に分かれています
スペース
次に、from と to のスペースが交換されます (from 領域のオブジェクトが十分に古い場合、つまりマークされた回数が古いレベルに達すると、古い世代に移動します)
メモリ サイズの設定。パラメータは以下の図に示すとおりです。 説明
-XMS: ヒープの最小スペース
-XMX: ヒープの最大スペース
-PermSize: メソッドの最小スペースarea
-MaxPermSize: メソッドの最大容量 area
-Xss : 各スレッドのスタック容量
-newSize: 新世代の最小容量
-maxNewSize: 新世代の最大容量
Old世代メモリは、ヒープの大文字と新世代のサイズを設定することで制御できます
旧世代メモリ = ヒープメモリ - 新世代メモリ
スタック

プログラムカウンターの数値実行される行数。 ネイティブ メソッドを呼び出すとき (ネイティブ) 空 現在のスレッドによって実行されるバイトコードの行番号インジケーター。バイトコード インタプリタは、作業中にカウンタの行番号を変更することによって、実行されるバイトコード命令を取得します。ネイティブ メソッドの呼び出し (ネイティブ) カウンタは空の仮想マシン スタックのプライベート所有者です。メソッドの終了とその他の情報ローカル変数テーブル: 基本データ型、オブジェクト参照、long 型と double 型は 2 つのローカル変数スペースを占有します

すべてメソッドが呼び出されるとき、パラメータはスタックにプッシュされます

ローカルメソッドスタック

ネイティブメソッドを呼び出すとき
ヒープ:
ヒープメモリはこちら
ヒープは、新世代と旧世代に分かれます

世代別コレクションアルゴリズムでは、新世代は、生存者空間から生存者空間までのエデン空間に分割され、それらの間のメモリ比率は8:1:1ですメソッド。領域ストレージ クラス情報、定数、静的変数、ジャストインタイムでコンパイルされたコード

メソッド領域の下にはランタイム定数プールもあります: コンパイル中に生成されたリテラルとシンボル参照を格納します
ブログ投稿を参照してください

ここで皆さんへのテストです:
記事内で言及されている情報の種類は何ですか?

コンパイル中に生成されるリテラル参照およびシンボリック参照とは何ですか?

以上がjvm Java メモリ領域の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。