misc.log

日常茶飯事とお仕事と

タスクマネージャの「メモリ利用量」をプログラムで取る

VB.NETから、タスクマネージャ上で表示されているプロセスの「メモリ利用量」表示の値を取得する方法を調べてみた。対象となるプロセスは、そのプログラム内から下記の処理で起動しているため、あまり参考にならないかもしれない。

hProcess = System.Diagnostics.Process.Start("TEST.exe")

このProcess.Startで戻ってくるプロセスオブジェクトに、WorkingSetというプロパティがあるのだが、それが「メモリ利用量」に相当する。タスクマネージャはキロバイト単位で表示されているが、このプロパティの値はバイト。表示と揃えるには、プロパティ値を1,024で割ればOK。

どうもこのProcessオブジェクト、各プロパティの値は「オブジェクト生成時のスナップショット」のようだ。たとえば、起動後じわじわとメモリ利用量が増えるような場合、最初の頃の値しか残っていない。こういう場合は、値を参照するまえに「Refresh」でいけるみたい。