質問: C#とガベージコレクション 私が今のところ理解していない.NETのガベージコレクションには秘密が存在する必要があります。 C#WinFormsアプリケーションには、ORマッパーツールを使用して非常に多くのオブジェクトを読み込むダイアログがあります。このプロセスは大量のメモリを消費し、このメモリのほとんどが文字列によって消費されると考えています。このダイアログを開くと、タスクmenagerは900MBのメモリ使用量を表示し、再度クエリを実行するとメモリ不足例外が発生します。うわー。 今度は、アプリケーションを最小限に抑えるために、何らかのタイプのガベージコレクションが行われるというヒントを得ました。これを行い、最大化することで、アプリケーションは10MBしか消費しません。クール。 しかし、今度は再びクエリを実行すると、メモリ消費量が突然900MBに戻り、メモリ不足例外が再度発生します。 ここで何が起こり、どのようにメモリ消費量を減らすことができますか?そのような場合、どのようにメモリ消費量を調査し、削減することができますか?
回答: There are a bunch of .Net Memory Profilers available to help diagnose issues like this. My favorite is dotTrace by JetBrains