在加载大型文件(例如 2GB 堆栈跟踪)之前,我会使用进程黑客清理几 GB 的内存,这样所有内容就不会因为来回交换而冻结一小时。但是进程黑客每次只能清空大约 200MB。
是否有任何程序或 Windows API 可以让我一次将几 GB 的修改后的内存清空到页面文件?
答案1
Process Hacker 作者提供了源代码,查看源代码可以发现 memlists.c 提供了你想要的内容:
命令 = MemoryFlushModifiedList;
状态 = NtSetSystemInformation( SystemMemoryListInformation, &命令, sizeof(SYSTEM_MEMORY_LIST_COMMAND) );
编写一个运行此命令的简单 C CLI 工具。
答案2
内存地图有一个空的修改页面列表选项。