是否有一种方法可以强制程序保留在RAM中

Is There a Way to Force a Program to Stay in RAM

本文关键字:程序 保留 RAM 方法 一种 是否      更新时间:2023-10-16

我能写一个程序吗?它会启动其他留在物理RAM中的小程序,避免交换到磁盘?我很好奇Linux和Windows的答案。

POSIX系统可以使用mlock/munlock将内存锁定到RAM中。在Windows上,您可以使用VirtualLock完成同样的操作。

不过,在几乎所有情况下,您都希望让操作系统来处理这类事情。

编辑:详细说明一下,如果你想这样做的原因是性能或响应能力,不要。你想要这样做的唯一原因是防止密码或加密密钥意外写入磁盘,攻击者可能会在磁盘上获取。

类似主题

引用其中一个用户:

是的,有:让程序调用VirtualLock函数:

进程已锁定的页面将保留在物理内存中,直到过程解锁或终止它们。这些页面保证不会在它们被锁定时被写入页面文件。

我相信SetProcessWorkingSetSize函数可能也会有所帮助。

对于那些认为我是异教徒的人来说可能有用:

请注意,在记忆力一个有效的原因可能是用户正在运行CD刻录机,并且CD刻录机不断地翻页,从而导致缓冲underrun,创造了一个过山车。在这种情况下锁定内存缓冲区,这样它们就不会被调出,即使这样意味着计算机的其余部分慢到爬行,因为它仍然比给用户一个过山车要好。可以有其他有效原因也是——我的观点是,虽然通常不建议锁定记忆中的页面,有效的情况仍然存在,我不认为扼杀这个想法会对这里的OP有所帮助。

更新:查看Process Hacker的Reduce Working Set菜单选项