4

MBで使用されている現在の物理メモリ量を取得するために離れて探しています。タスクマネージャーのようなもの

ここに画像の説明を入力してください

私は現在使用してPerformanceCounter("Memory", "Available MBytes", true);いますが、ページファイル(私は信じています)も含まれていますが、これは私が望んでいるものではありません。また、使用可能なメモリではなく、使用済みのメモリを取得するオプションが必要です。

私が取り組んでいるアプリケーションは、目的のしきい値に達するまで、物理メモリの使用量を監視します。次に、いくつかのWindowsサービスを再起動します。

なぜ私がそのようなプログラムを開発しているのか知りたいのなら。一部のプログラムではサーバーでメモリリークが発生します。すべてのメモリリークを解決するまで、Windowsサービスを再起動してメモリを解放する必要があります。このアプリケーションを作成して、サーバーの稼働と応答性を維持しています。

4

3 に答える 3

6

PerformanceCounterクラスを使用すると、 PF使用法の詳細を取得できます。

PerformanceCounter pageCounter = new PerformanceCounter
            ("Paging File", "% Usage", "_Total", machineName);

ここですべてのカテゴリ情報を見つけることができます、プロセスオブジェクト

追加されました。次を使用して、使用可能なメモリの詳細を取得することもできますPerformanceCounter

PerformanceCounter ramCounter = PerformanceCounter
            ("Memory", "Available MBytes", String.Empty, machineName);

PerformanceCounterNextValue()メソッドを使用すると、で使用可能なメモリ値を取得できます。後で、それをしきい値MBと比較して、目的のWindowsサービスを停止できます。

if (ramCounter.NextValue() > thresholdValue)
{
    // ... Stop Desired Services
}

参照:単純なパフォーマンスカウンターアプリケーション

于 2012-11-19T12:19:20.720 に答える
2

カーネル関数を呼び出してもかまわない場合。それを行うためのC++コードは次のとおりです。

 MEMORYSTATUSEX statex;
 statex.dwLength = sizeof (statex);
 GlobalMemoryStatusEx (&statex);

codeprojectでは、c#からカーネル関数を呼び出す方法を見つけることができます。

http://www.codeproject.com/Articles/1285/Calling-API-functions-using-C

于 2012-11-19T12:17:09.767 に答える
1

GlobalMemoryStatusEx個人的には、P/Invokeを介したWin32API呼び出しで使用します。

詳細については、こちらをご覧ください:-http: //www.pinvoke.net/default.aspx/kernel32.globalmemorystatusex

于 2012-11-19T12:24:32.943 に答える