すべてのガベージコレクターには非常に扱いにくい側面がありますが、これは一部の説明で説明されている可能性があり、それは「フルスキャン」または「フルコレクター」です。定期的、ランダム、断続的にすべてのオブジェクトをスキャンする必要があります。世代別コレクターは、フルスキャンを延期し、その期間を最小化するのに優れていますが、それでも必要です。
世代別コレクターは、「ナーサリー」スペースと呼ばれることもありますが、最終的に/必然的に「古い」世代スペースに収集する必要があり、メモリのフルスキャンが発生します。
このフルスキャンは、ほとんどすべてのメモリキャッシングと(特に!)仮想化スキームと互換性がありません。この場合、ほとんどすべてのメモリキャッシング/仮想化スキームは、パフォーマンスの改善においてひどく失敗するはずです。
したがって、この質問に対する重要な答えは、フルスキャンがトリガーされる頻度、およびその効果が発生するタイミングと、許容できるかどうかです。これは、よりアプリケーションに依存するプロパティ/質問に要約されます。
言い換えると、コレクターの「ほとんどの」操作の場合、キャッシュがおそらく役立ちます(キャッシュと「若い」ナーサリースペースは一般に重なります!)が、定期的、断続的、最終的、不可避、重い、 「古い世代」のスペースが完全に収集され、キャッシュの「ヒット率」が非常に悪い場合、パフォーマンスの「大規模な」[低下]スパイクもあります。スキャン/収集サイクル。言い換えれば、避けられない周期的な不連続性(パフォーマンスの統計的推定/平均/傾向などが誤解を招き、適用できない場合)。
現在登場しているのは、基礎となるメモリ管理システム(キャッシュ/仮想化)とメッシュするように設計されたいくつかの新しい収集システムです。メモリ収集、キャッシュ、および仮想化の個別のシステムを完全に分離する歴史的なアプローチは、3つの側面すべてを結合/統合/アドレス指定するアプローチと同様に機能しないようです。
たとえば、ZhouとDemskyによるキャッシュ対応のガベージコレクションを参照してください。