一部の(少なくともMonoおよび.NETの)ガベージコレクタには、頻繁にスキャンする短期メモリ領域と、あまり頻繁にスキャンしないセカンダリメモリ領域があります。Monoはこれをナーサリと呼びます。
どのオブジェクトを破棄できるかを調べるために、ルート、スタック、レジスタから始まるすべてのオブジェクトをスキャンし、参照されなくなったすべてのオブジェクトを破棄します。
私の質問は、使用中のすべてのメモリが収集ごとにスキャンされるのをどのように防ぐのですか?原則として、使用されなくなったオブジェクトを見つける唯一の方法は、すべてのオブジェクトとそのすべての参照をスキャンすることです。ただし、これにより、アプリケーションで使用されていなくても、OSがメモリをスワップアウトできなくなり、「Nursery Collection」でも実行する必要がある膨大な作業のように感じます。保育園を利用することで、彼らが多くを獲得しているとは思えません。
私は何かを見逃していますか、またはガベージコレクタは実際にすべてのオブジェクトとすべての参照をスキャンするたびにスキャンしますか?