複数のコンポーネントで構成され、それぞれが単一のDLLにコンパイルされ、それぞれがそれ自体の中で複数のスレッドを実行するアプリケーションがあります。これらのコンポーネントを起動するシェルプログラムがあります。
私はこのアプリケーションをWindowsCE6環境で実行していますが、これは(システムのプログラムを除いて)唯一のプログラムです。ただし、タスクマネージャウィンドウを見ると、時間の経過とともに、割り当てられたメモリ使用量が徐々に増加していることがわかります。私のプログラムにメモリリークがあるのではないかと疑っています。次のようにします。
特定のコンポーネントに移動して、次のコードを呼び出す30分ごとに実行されるTimerオブジェクトを作成します。
long memByte = GC.GetTotalMemory(false);
Console.Write("Heap Memory: " + (memByte/1000).ToString() + "KB");
インターネットを読んでみると、GetTotalMemoryは基本的にシステムのトータルマネージメモリを提供してくれると思います。プログラムにメモリリークの問題がない場合は、結果をグラフ化すると、時間外に何らかのフラットラインが発生する可能性があります。そうでなければ、ゆっくりと増加します。
私の質問は、GetTotalMemoryは実際にすべてのアプリケーションの合計管理ヒープメモリを提供しますか、それともこのコードが実行されている現在のコンポーネントによって使用されている特定のヒープのみを提供しますか?
ありがとうございました、