ホームページ  >  記事  >  Java  >  Java メモリ管理では、若い世代、古い世代、永続的な世代がどのように連携するのでしょうか?

Java メモリ管理では、若い世代、古い世代、永続的な世代がどのように連携するのでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-02 17:46:29620ブラウズ

How do the Young, Old, and Permanent Generations Work Together in Java Memory Management?

Java メモリ管理: 若い世代、古い世代、永続的な世代について理解する

Java のメモリ管理用語では、ヒープは 3 つの主要な世代に分割されます: 若者、老人、永続的。各世代は特定の目的を果たし、他の世代と動的に対話します。

若い世代

若い世代は、新しいオブジェクトが最初に割り当てられるヒープの領域です。さらに、エデンとサバイバーの 2 つのサブスペースに分かれています。ほとんどの割り当てはエデン空間で発生します。 Eden スペース内のオブジェクトが 1 つ以上のガベージ コレクション サイクルを乗り越えると、そのオブジェクトは Survivor スペースに昇格します。

旧世代

旧世代はプライマリ ストレージ領域です。寿命の長いオブジェクトの場合。 Survivor スペースで複数のガベージ コレクションを経て生き残ったオブジェクトは、古い世代に昇格されます。古い世代は、若い世代に収まらない大きなオブジェクトを保存する責任もあります。

永続世代 (非ヒープ)

その名前に反して、永続世代は、生成は、Oracle の JVM のヒープの一部ではありません。これは、主にクラス定義、メタデータ、共有定数データ用に予約されている別個の専用スペースです。 Java 6 以前では、インターンされた文字列も永続世代に格納されていましたが、これは Java 7 で変更されました。

相互作用と関係

3 つの世代は次のように相互作用します。 :

  • オブジェクトが割り当てられると、そのオブジェクトは Eden スペースに配置されます。
  • オブジェクトが Eden で 1 つ以上のガベージ コレクションを生き残った場合、そのオブジェクトは Survivor スペースに昇格します。
  • Survivor スペースで十分に長く存続するオブジェクトは、古い世代に昇格します。
  • 古い世代のオブジェクトは、到達できなくなるか、フル ガベージ コレクションが発生するまでそこに残ります。
  • 永続世代では、アプリケーションの存続期間を通じて、ロードされたすべてのクラスのクラス定義とメタデータが保存されます。

以上がJava メモリ管理では、若い世代、古い世代、永続的な世代がどのように連携するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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