2011-09-11 11 views
2

は以下Java生成とガベージコレクタの概念の明確化?

文1のメモリ管理を通して行っている間、私は http://www.springsource.com/files/uploads/all/pdf_files/news_event/Inside_the_JVM.pdf で見つけたstatmentsです: - 彼らは、1つまたは複数のマイナーGCを生き残る場合は、すべての新しいオブジェクトが若い世代 に作成され

のみ古い世代に移動しました

質問1: - マイナーGCがここで意味するものは得られませんでしたか?

文2: -

主なコレクション終身スペースが

Question2をいっぱいにするときに発生: - ここを意味する主要なものをコレクションを取得していないですか?私の理解あたりとして


すべての新しいオブジェクトは、その後、GCはその後、参照オブジェクトのためのメモリを解放走る若い世代に作成されていることは 到達できない、古い世代に他のすべてのオブジェクトを転送します。

質問3:JVMは、古い世代と若い世代のGCをいつ実行するのですか?若い世代と古い世代がそれぞれの世代の指定された空間を満たしているときに動作しますか?

編集そのサイズが大きなcollection.This推測です古い世代よりはるかに小さいので、その金升世代がマイナーコレクションであるように見えます。わからない?

答えて

2

1)マイナーコレクションは、若い空間からのオブジェクトのコピーです。

2)主要なコレクションは古い世代の整頓です。

マイナーコレクションは、通常、名前を説明するメジャーコレクションよりも速いです。

3)若い世代のコピーオブジェクトが古い世代を満たすと、完全なコレクションが発生します。 (旧世代が少し古いと判断した場合、コンカレントコレクタはメジャーコレクションを起動できます)

+0

ポイント1)マイナーなものは、若い空間からまたはその空間の間のオブジェクトのコピーです。どのように空間を解放するのに役立ちますか?あなたが言ったように、マイナーコレクションは通常、メジャーコレクションよりも速いです。メジャーコレクションよりもマイナーコレクションのオブジェクトのサイズが小さいためです.Point3: - あなたは言った。これで十分なメモリが解放されなければ、メジャーコレクションが実行されます。メジャーコレクションは古い世代からスペースを解放します。オブジェクトの作成には、若い世代のスペースが必要です。これに対してマイナーコレクションは必要ありませんか? –

+0

ほとんどのオブジェクトは短命です。 eden空間では、保持されているオブジェクトがコピーされ、領域が一度に解放されます。これを行うのにかかる時間は、保持されるオブジェクトの数にほぼ比例します。古い世代では、ほとんどのオブジェクトは保持され、断片化を避けるために同じ領域にコピーする必要があります。 3)古いジェネレーションがいっぱいになると、より正確に完全なコレクションが発生します。 –