0

私たちが知っているように、ガベージコレクターは世代別コレクションの哲学を信じています。寿命が短い/小さなオブジェクトがジェネレーション 0 に配置されており、アクセスを高速化するために L2 プロセッサまたはコア キャッシュ (ここで間違っている場合は訂正してください) と考えられます。これを念頭に置いて、第1世代と第2世代はどこに配置されていますか?

4

1 に答える 1

1

GC 世代とキャッシュ/メモリ レベルの間に直接的な関係はありません。

メモリ マネージャは、単純にメモリ ブロックから開始し、そこから割り当てます。コードはそれを使用します。

プロセッサはメモリの使用を追跡するため、最近使用されたものは通常、プロセッサが最も迅速にアクセスできる場所に保存されます。使用パターンに応じて、最近使用されたデータはほぼすべての世代から取得できます。

最近作成されたオブジェクトは頻繁に使用され、古いオブジェクトはあまり使用されない傾向あります。これにより、最近作成されたオブジェクトが L1 キャッシュに、わずかに古いオブジェクトが L2 に、さらに古いオブジェクトがメイン メモリに格納される傾向があります。これは一般的な傾向にすぎず、メモリ マネージャーによって強制されるものではありません。いつでも、キャッシュの各レベルに 2 つまたは 3 つの異なる世代のオブジェクトが含まれる可能性がかなり高くなります。

また、データがキャッシュにロードされる場合、アクセスされている部分のみがキャッシュにロードされることに注意してください。したがって、大きなオブジェクトがある場合、最近アクセスされたその一部は L1 キャッシュにあり、最近アクセスされた他の一部は L2 キャッシュにあり、残りはメイン メモリにのみある可能性があります。

于 2013-08-04T23:10:08.283 に答える