是否有可能提示 Windows 将进程完全移出交换区

是否有可能提示 Windows 将进程完全移出交换区

是否可以提示 Windows 虚拟内存管理器将特定进程从交换中移出?

我经常发现自己遇到的情况是,所有常规程序通常会使用大约 50% 的 RAM,特别是嵌入式目标的 IDE 及其相关的调试器。

然后我让一个占用大量内存的进程运行 - 例如 wireshark 或某个周末积累数据的进程,所有内容都会被交换出去 - 就像它们应该的那样。大型进程完成后,大多数进程都留在交换区中。

然后,偶尔暂停以重新交换进程会导致调试器出现问题,这可能是由于 IDE 和硬件调试器之间的通信时序问题造成的。因此,在经过足够多的尝试将 IDE 中的调试数据重新交换出来之前,对目标设备的控制可能是不连续的。

答案1

KerrekSB 为此开发了一个特殊的工具:

https://stackoverflow.com/a/2940209/684229

它在 GiTHUB 上有二进制文件:https://github.com/louisdx/unpage

在运行过程中,您会收到很多错误“无法从 0x....000 读取一个字节,错误 299(读取 0 字节)”,但这不是问题,该工具运行良好。

答案2

您可以使用进程套索给一个过程内存页面优先级

从 Windows Vista 开始,每个内存页面的优先级从 0 到 7。备用列表分为八个列表,每个列表处理不同优先级的页面。当内存管理器想要从备用列表中获取页面时,它会首先从低优先级列表中获取页面。“

Process Lasso 可以通过允许为进程设置持久内存优先级来帮助管理内存优先级,以便每次运行时将其虚拟内存页面设置为特定优先级。

Process Lasso 有两个版本:免费版和商业版(试用版售价 18.95 美元)。

相关内容