2012-12-25 4 views
21

可能性の重複:
How to get memory available or used in C#どのようにアプリケーションが使用するメモリの量を取得する

私は自分のアプリケーションのステータスバーに自分のアプリケーションで使用されるメモリを視覚化したいです。私はメモリリークを探していますが、私はどこを知っていません。さて、私のアイデアは、ステータスバーに使用されているメモリを視覚化して、アプリケーションを使って作業している間にそれを見ることができ、問題が発生した部分を見つけてプロファイリングできるようにすることです。

誰かが私に助けを与えることができます、どのように私は使用されたメモリを得ることができます。

答えて

22

あなたは(真のパラメータが最初のコレクションを実行するためにGCを伝えます)次の関数を使用することができます。

long memory = GC.GetTotalMemory(true); 
+0

重複して説明したように、このソリューションは管理されているヒープのみを調べます。プロセスの全サイズを取得するには、https://stackoverflow.com/a/750595/331281 – Dejan

-1

理由だけではなく、唯一のSysinternalsからタスクマネージャまたは、より高度なツールを使用してメモリ使用量を監視していませんどのワークフローでメモリ使用量が異常に高くなったのかを判断したら、CLR Profilerなどでプロファイルを作成します。

8

あなたはGC.GetTotalMemoryを試すことができます。

それは、現在割り当てされると考えられたバイト数を取得します。パラメータは、システムがゴミを収集して>オブジェクトをファイナライズできるようにするために、このメソッドが返す前に短い間隔を待つことができるかどうかを示します。


または

using System.Diagnostics; 

Process currentProc = Process.GetCurrentProcess(); 

あなたは、現在のプロセスへの参照を持っていたら、PrivateMemorySize64プロパティを読み取ることによって、そのメモリ使用量を決定することができます。

long memoryUsed = currentProc.PrivateMemorySize64; 
+1

を参照してください。 – mcmillab

2

アプリケーションで使用されているメモリを監視する場合は、そのコードを記述する必要はありません。 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名前空間のクラスがあります。次の例を参照してください。http://www.geekpedia.com/tutorial211_Using-Performance-Counters-in-Csharp.html

関連する問題