0

私のアプリケーションには、10 個のギザギザ配列と 5 個のリストがあります。平均的なものは、double 型や string 型などのさまざまなデータで埋められます。アプリケーションが大量のメモリを消費する必要があることはわかっていますが、使用されているメモリの総量を確認するにはどうすればよいでしょうか?

を使用するために読んだGC.GetTotalMemoryので、最初にしたことは次のようなものでした:

var initialMemory = System.GC.GetTotalMemory(true);
many line of code
...
..
var finalMemory = System.GC.GetTotalMemory(true);
var consumption = finalMemory - initialMemory;

すべてのコードは、main()彼の関数を呼び出す関数内にありますが、最終結果はゼロです。それもゼロだと見たfinalMemoryので、まず何が起こっているのですか?初期メモリには番号がありますが、最終メモリには番号がありません。

System.GC.GetTotalMemoryアプリケーションで使用されているメモリの合計を確認するための最良のオプションはありますか?

4

3 に答える 3

1

私はかつて使用しました:
global.asaxファイルで:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    if (WebConfigSettings.ShowMemoryUsage)
    {
        GC.Collect();
        logger.Debug(string.Format("Total memory: {0:###,###,###,##0} bytes", GC.GetTotalMemory(true)));
    }
}
于 2012-10-09T19:36:29.550 に答える
0

これも利用できるリンクですWMIで(ほぼ)すべてを行う方法

この StackOverFlow の投稿も参照してください。多くのオプションがあります WMI は非常に強力 です CPU 使用率を取得する方法

WMI が探しているもの、または使用したいものではない場合は、パフォーマンス カウンターを参照してください。パフォーマンス カウンターの紹介も使用方法の例です。

于 2012-10-09T19:37:34.660 に答える
0

次のようなことができます。

using System.Diagnostics;

...
    Process.GetCurrentProcess().VirtualMemorySize64

これにより、タスク マネージャーなどの場所に表示される番号が得られます。ただし、これには管理されていないオーバーヘッドのメモリ使用量が含まれます。System.GC.GetTotalMemory(true)ガベージ コレクターによって使用されている実際のメモリ量 (.net メモリ使用量) が表示されます。

于 2012-10-09T19:24:09.970 に答える