この関数をいじることの深刻な意味は理解できますが (または、少なくとも私はそう考えています)、立派なプログラマーが、知らない人でさえも使用しないようなものの 1 つになっている理由がわかりません。それは何のためです。
ユーザーが何をしているかによってメモリ使用量が大きく変化するアプリケーションを開発しているとしましょう。アプリケーションのライフ サイクルは、編集とリアルタイム処理という 2 つの主要な段階に分けることができます。編集段階で、数十億、場合によっては数兆のオブジェクトが作成されるとします。小さいものもあればそうでないものもあり、ファイナライザーを持っているものも持っていないものもあり、それらの寿命は非常に数ミリ秒から長い時間までさまざまであるとします。次に、ユーザーはリアルタイム ステージに切り替えることを決定します。この時点で、パフォーマンスが基本的な役割を果たしており、プログラムの流れのわずかな変更が壊滅的な結果をもたらす可能性があるとします。その後、オブジェクトプールなどを使用してオブジェクトの作成を最小限に抑えますが、GC が予期せず鳴り響いてすべてを破棄し、誰かが死亡します。
質問: この場合、第 2 段階に入る前に GC.Collect() を呼び出すのが賢明ではないでしょうか?
結局のところ、これら 2 つの段階が互いに時間的に重なることはなく、GC が収集できたすべての最適化と統計は、ここではほとんど役に立たないでしょう...
注: ご指摘のとおり、.NET はこのようなアプリケーションに最適なプラットフォームではないかもしれませんが、それはこの質問の範囲を超えています。その意図は、GC.Collect() 呼び出しがアプリケーションの全体的な動作/パフォーマンスを改善できるかどうかを明確にすることです。そのようなことを行う状況が非常にまれであることは誰もが同意しますが、GC は推測を試み、ほとんどの場合は完全にうまくいきますが、それでも推測にすぎません。
ありがとう。