VC++ Get&SetProcessWorkingSetSizeの使い方 【チュートリアル】


ワーキングセット

各プロセスにはワーキングセットというものが存在し、このサイズは常に割り当てられている物理メモリ量を意味する。Windowsの場合このワーキングセットのサイズは、最小値と最大値を設定することができ、可能な限りその範囲内のサイズで物理メモリを割り当てる。

スポンサーリンク

なお、現在割り当てられている物理メモリ量を知るには、タスクマネージャーのメモリ使用量という部分を見るとよい。

task_manager.gif
 

GetProcessWorkingSetSize

この関数で、あるプロセスのワーキングセットのサイズを取得することができる。自分のプロセスのワーキングセットを設定するには次のように行う。

なお、プロセスハンドルを取得する時にPROCESS_ALL_ACCESSというアクセス権限を割り当てているが、これはMSDNを参照するとGetProcessWorkingSetSizeを使うためのプロセスハンドルには、

PROCESS_QUERY_INFORMATION アクセス権が必要です。

ということからである。単純なコンソールアプリケーションで試したところデフォルトでは、最小200KB最大1380KBが設定されているようだ。

SetProcessWorkingSetSize

この関数で、あるプロセスのワーキングセットのサイズを設定することができる。自分のプロセスのワーキングセットを設定するには次のように行う。

なお、プロセスハンドルを取得する時にPROCESS_ALL_ACCESSというアクセス権限を割り当てているが、これはMSDNを参照するとSetProcessWorkingSetSizeを使うためのプロセスハンドルには、

PROCESS_SET_QUOTA アクセス権が必要です。

ということからである。また、

dwMinimumWorkingSetSize と dwMaximumWorkingSetSize のどちらかがプロセスの現在のワーキングセットサイズを超える場合は、指定したプロセスにSE_INC_BASE_PRIORITY_NAME 権が必要です。

とも書いてある。これについてはまた次回。

スポンサーリンク
カテゴリー: チュートリアル   パーマリンク

VC++ Get&SetProcessWorkingSetSizeの使い方 への1件のコメント

  1. ピンバック: Win32API EnumProcesses(プロセス列挙)の使い方 | 豆知識