重複の可能性:
C#でメモリを使用可能または使用する方法
アプリケーションのステータスバーで、アプリケーションが使用しているメモリを視覚化したい。メモリリークを探していますが、どこにあるのかわかりません。さて、私の考えは、ステータスバーで使用済みメモリを視覚化して、アプリケーションでの作業中にそれを確認し、問題が発生する部分を見つけて、これをプロファイリングできるようにすることです。
誰かが私に助けを与えることができますか、どうすれば使用済みメモリを取得できますか?
重複の可能性:
C#でメモリを使用可能または使用する方法
アプリケーションのステータスバーで、アプリケーションが使用しているメモリを視覚化したい。メモリリークを探していますが、どこにあるのかわかりません。さて、私の考えは、ステータスバーで使用済みメモリを視覚化して、アプリケーションでの作業中にそれを確認し、問題が発生する部分を見つけて、これをプロファイリングできるようにすることです。
誰かが私に助けを与えることができますか、どうすれば使用済みメモリを取得できますか?
次の関数を使用できます(trueパラメーターはGCに最初に収集を実行するように指示します):
long memory = GC.GetTotalMemory(true);
あなたは試すことができますGC.GetTotalMemory
:
現在割り当てられていると考えられるバイト数を取得します。パラメータは、システムがガベージを収集してオブジェクトをファイナライズできるようにするために、このメソッドが戻る前に短い間隔で待機できるかどうかを示します。
また
using System.Diagnostics;
Process currentProc = Process.GetCurrentProcess();
現在のプロセスへの参照を取得したら、PrivateMemorySize64プロパティを読み取ることでそのメモリ使用量を判断できます。
long memoryUsed = currentProc.PrivateMemorySize64;
アプリケーションが使用するメモリを監視する場合は、そのためのコードを記述する必要はありません。Windowsのパフォーマンスカウンターを使用するだけです(http://www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters)。彼らはあなたがチャートで必要な情報を提供します!たくさんのメモリカウンター(http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx)があり、そのうちの1つに必要なデータがあり、いつアプリは必要以上のメモリを使用し始めます。
ただし、この情報をアプリケーションに含める必要がある場合でも、パフォーマンスカウンターを使用できます。.NETのSystem.Diagnostics名前空間には、データにアクセスするためのクラスがあります。この例を参照してください:https ://weblog.west-wind.com/posts/2014/Sep/27/Capturing-Performance-Counter-Data-for-a-Process-by-Process-Id
TaskManagerまたはSysinternalsのより高度なツールを使用してメモリ使用量を監視し、どのワークフローがメモリ使用量を異常に増加させるかを判断した後でのみ、CLRProfilerなどを使用してアプリケーションのプロファイルを作成してください。