ガベージ コレクターがどのように機能するかを確認するために、非常に単純なコードを実行しました。
String a = null;
while ( true ) {
a = new String(" no... ");
}
ParallelGC を使用しています。GC の結果を出力しました。これが最初の (マイナーな) GC です。
[GC [PSYoungGen: 16448K->1616K(19136K)] 16448K->1624K(62848K), 0.0022134 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
youngGen はダウンしました14880K
が、fullHeap はちょうどダウンしました14872K
これは、8k が在職世代に移行したことを意味しますか? 私の理解では、GC はクラス 'a' のインスタンス化されたものと呼ばれた可能性があり、生きているとマークされ、在職世代に移動されたに違いありません。この理解は正しいでしょうか?また、これは「浮遊ゴミ」ですか?時間の経過とともに、Tenure 世代がいっぱいになり、fullGC が必要になりますが、時間がかかります。
また、この特定のケースでは、マイナー コレクション全体が収集され、理想的には何もテニュア ジェネレーションに移行されるべきではありませんか? これらはすべて短命のオブジェクトです。