调用NT的API SetProcessWorkingSetSize(),清理内存

虚拟内存

bruce | 十月 09,2004 21:21

Win下程序在idle的情况下,把占用的内存腾出,存入虚存,是应该的

From:SMTH

QQ2004II的BasicCtrlDll.dll中提供了一个函数
void __cdecl MinimizeMemory(void);
用以清理qq的内存。cygwin曾说其原理就是调用NT的API SetProcessWorkingSetSize(),
我刚才看了一下,果然如此:

void MinimizeMemory()
{
OSVERSIONINFOEX osvi;
GetVersionEx(&osvi);
if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
SetProcessWorkingSetSize(GetCurrentProcess(), -1, -1);
}
}

这样的话,所谓“清理内存”其实就是把idle的内存放到虚拟内存里面去,和MyIM什么的
是一样的。

以上转自:http://blog.9zi.com/post/1/399

你可能感兴趣的:(qq,Blog)