ワーキングセットの最小化(C言語)

説明:

関数呼出し後五秒間待つ。次に、その時点でフォアグラウンドウィンドウとなっているウィンドウを探し、そのウィンドウを作成したプロセスのワーキングセットのサイズを一時的に0にし、十秒間待つ。十秒後に、その時点でのプロセスのワーキングセットのサイズを表示することにより、その十秒間でプロセスが使用したワーキングセット中のメモリページの量を推測することができる。

キーワード:

EmptyWorkingSet, GetProcessMemoryInfo

サンプルコード:

void TestWsEmpty()
{
	HWND hWnd;
	char WindowTitle[1000];
	DWORD ProcessId;
	HANDLE hProcess;
	BOOL bResult;
	PROCESS_MEMORY_COUNTERS MemInfo;
	int i;

	for(i=5; i>0; i--) {
		printf("%d秒前\n", i);
		Sleep(1000);
	}

	hWnd = GetForegroundWindow();
	GetWindowText(hWnd, WindowTitle, 1000);
	GetWindowThreadProcessId(hWnd, &ProcessId);
	hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId);

	printf("target: %s\n", WindowTitle);
	bResult = EmptyWorkingSet(hProcess);
	if(!bResult) {
		printf("working-set can not empty.\n");
		return;
	}

	printf("wait 10 seconds...\n");
	Sleep(10000);

	GetProcessMemoryInfo(hProcess, &MemInfo, sizeof(MemInfo));
	printf("current working-set size: %d\n", MemInfo.WorkingSetSize);
}
(original text:1999/01/08 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。