私は過去数日間のメモリリークについて読んできましたが、現在C#で書かれたアプリケーションに影響を与えている可能性があります。それは私の総メモリのおよそ250 MBを消費するはずですが(それは最初の数時間の間に消費します)、私は平均してこの値が毎日2倍になることに気付きました。たとえば、これは稼動していて、現在は約1.2GBのメモリを消費している5日目です。C#でメモリリークを見つけて解決するのに役立つ必要がある
私はSciTech Softwareから詳細な.NETメモリプロファイリングをダウンロードしました。これは、実際にはここにあるソフトウェアに間違いがあり、異なる時期に3つのスナップショットを取得したことに気付きました。しかし、それを理解しようとするとかなりの時間を費やしたり、それを私のコードにリンクさせたりしても、これまでには失敗したようです。
したがって、私が使用しているメモリプロファイラーが実際には良いのかどうかを知りたいのですが、このや他のメモリプロファイラーでどのように理解して結論に達するかについてのガイドやウォークスルーを知っていれば明らかにどのようにして私のメモリリークの解決策を見つけることができますか?
ご協力いただきありがとうございます。
あなたは、Visual Studioデバッガでソフトウェアを実行することはできますか?どのオブジェクトが問題を引き起こしているかを示すことができる内蔵のプロファイラがあります。 –
'Debugger'を使う以外にも、' new 'というキーワードを使ってグローバル検索を行うのが一番良い方法です。オブジェクトを手動で破棄したり、オブジェクトを 'using() {} '句。第2に、このようなオブジェクトを 'Object objVariable;'のように宣言しているかどうか、あるいは 'Object objVariable = null;'をメソッドやクラスのレベルで宣言しているかどうかを確認します。おそらくあなたは 'Resharper'をインストールすることができます。ヒントや手がかりの数多くのものを与えるでしょう。いくつかのコードを見ずに正確に判断するのは難しい – MethodMan
また、購読中止されていないイベントハンドラも探してください。 ["イベントから退会するまで、公開オブジェクト内のイベントの基礎となるマルチキャストデリゲートは、サブスクライバのイベントハンドラをカプセル化するデリゲートへの参照を持ちます。公開オブジェクトがその参照を保持する限り、ガベージコレクションはサブスクライバを削除しませんオブジェクト]」(https://msdn.microsoft.com/en-us/library/ms366768.aspx)を参照してください。 – Quantic