C++でメモリ使用量を調べる

昨日のCPUに続き。
メモリの場合は非常に簡単です。

1.OpenProcessにてプロセスハンドルを取得
2.GetProcessMemoryInfoを使う。
以上です。

取得出来る値は、
(1)ページ・フォールト数(ページ フォルト)
(2)現在ワーキングセット(メモリ使用量)
(3)最大ワーキングセット(最大メモリ使用量)
(4)現在ページプールの使用サイズ(ページ プール)
(5)最大ページプールの使用サイズ
(6)現在非ページプールの使用サイズ(非ページ プール)
(7)最大非ページプールの使用サイズ
(8)現在ページングファイルの使用サイズ(仮想メモリ サイズ)
(9)最大ページングファイルの使用サイズ

詳しいことはこちらに。
GetProcessMemoryInfo 関数
プロセスのメモリ情報を取得 - プログラミングのメモ帳


しかーし、GetProcessMemoryInfoでは、Vistaのタスクマネージャにデフォルトで出てくる"Private Working Setが"取れません。
上記(2)の現在のワーキングセットと何が違うのかと言うと、
Working Set:共有DLLを含めたプロセスのメモリ使用量
Private Working Set : 共有DLLを含めない、プロセスのみが使用する(共有できない)メモリサイズ

そこでPdhAddQueryに指定するパフォーマンスカウンタへのパスを、"\\Process(hogehoge)\\Working Set - Private"と指定すれば値は取れる思う。やってないけど。。。

プログラミング言語C++ 第4版

プログラミング言語C++ 第4版

C++ の絵本

C++ の絵本

独習C++ 第4版

独習C++ 第4版