ほとんどの場合、オブジェクトは新世代Eden領域で最初に割り当てられます。 Eden メモリ領域に割り当てられる十分なスペースがない場合、仮想マシンはマイナー GC (新世代 GC) をトリガーします。マイナー GC 中に、仮想マシンは Eden 領域内のオブジェクトを Survivor 領域の 1 つに移動します。
いわゆる大きなオブジェクトとは、大量の連続スペースを必要とするオブジェクトを指します。仮想マシンは XX:PretenureSizeThreshold パラメータを提供するため、この値より大きいオブジェクトは古い世代に直接割り当てられます。
仮想マシンは、世代別コレクションの考え方を使用してメモリを管理する際、どのオブジェクトを新しい世代に配置するかを識別できる必要があります。世代と古い世代に配置する必要があるもの。これを実現するために、仮想マシンは、新しい世代の GC 後にオブジェクトが存続するたびに、オブジェクトの年齢が特定のレベル (デフォルトは 15) に達すると 1 年ずつ増加します。古い世代に昇格するオブジェクトの年齢制限は、-XX:MaxTenuringThreshold で設定できます。
新世代 GC (マイナー GC): 新しい世代で発生するガベージ コレクション アクションを指します。ほとんどのオブジェクトは一時的な生死の特性を持っているため、マイナー GC は非常に頻繁に発生します。リサイクル速度も比較的速いです。
旧世代 GC (メジャー GC / フル GC): メジャー GC の発生後に、多くの場合少なくとも 1 つのマイナー GC を伴う、旧世代で発生する GC を指します。メジャー GC の速度は、通常、マイナー GC よりも 10 倍以上遅くなります。
上記は Java 仮想マシンの学習 - オブジェクトのメモリ割り当てとリサイクルの内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。
関連記事: