Java メモリ プールの謎を解く: 階層の詳細
Java 開発の領域では、メモリ プールは重要な側面として機能します。 jconsole を使用した Java アプリケーションの監視を詳しく調べると、困惑する可能性のある一連のオプションが表示されます。この説明では、ヒープ メモリ プールと非ヒープ メモリ プール、およびそれらを構成するサブプールの区別について説明します。
ヒープ メモリ
その中核となるヒープ メモリは、Java 仮想メモリが使用される主要な領域です。マシン (JVM) は、クラス インスタンスと配列の両方にメモリを割り当てます。その柔軟性により、増大するメモリ需要に対応するために動的に拡張することができます。ヒープ メモリ レルム内では、構造化された階層によってメモリが個別のプールに分割されます。
-
Eden Space: このプールは、大部分のオブジェクトの初期割り当てサイトとして機能します。新しく作成されたインスタンスはここに常駐し、ガベージ コレクターの判断を待ちます。
-
サバイバー スペース: ガベージ コレクターとの最初の遭遇を超えて生き残ったオブジェクトの安息の地、サバイバー スペースはオブジェクトに一時的な休息を提供します。
-
Tenured Generation (または Old Gen): 期限付きオブジェクトの最後の休息場所である Tenured 世代には、複数のガベージ コレクション サイクルに耐えたオブジェクトが格納されます。
非ヒープ メモリ
ヒープ メモリの範囲を超えて、非ヒープ メモリ ドメインは JVM 自体の内部動作専用のままです。重要な操作のために特定のメモリ セグメントを分離します。
-
永続世代: このプールは、クラス オブジェクトやメソッド オブジェクトを含む、仮想マシン自体に関連するリフレクティブ データを蓄積します。クラス データ共有を利用する Java VM は、この世代を読み取り専用と読み取り/書き込みのサブスペースに分割します。
-
コード キャッシュ: コンパイルされたコードの聖域であり、コード キャッシュは超高速アクセスを保証します。ネイティブ コードに変換し、アプリケーションのパフォーマンスを向上させます。
以上がJava のさまざまなメモリ プールとは何ですか?また、それらはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。