プロセスのメモリ使用量を測定する手順

タスクマネージャーに表示されている「メモリ(プライベートワーキングセット)」と同じ値を表示するには、PerformanceCounterを使う。Process.PrivateMemorySize64 ではだめ。Google+からコピーした記事。2013/9/12



var pc1 = new PerformanceCounter("Process", "Working Set - Private", Process.GetCurrentProcess().ProcessName);
long n = pc1.RawValue;    // メモリ使用量

エクセルが複数個動いているときに、それぞれのメモリ使用量が欲しいときは、エクセルそれぞれのプロセス名を得る。

    var cg = new PerformanceCounterCategory("Process");
    foreach (string s in cg.GetInstanceNames())
    {
            var p = new PerformanceCounter("Process", "ID Process", s, true);
           if (p.RawValue == ps.Id)
           {
               psName = s;
               break;
           }
   }

時間がかかるので、プロセスIDと名前はキャッシュするのが吉。

コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。