是否有一种方法可以强制程序保留在RAM中
Is There a Way to Force a Program to Stay in RAM
我能写一个程序吗?它会启动其他留在物理RAM中的小程序,避免交换到磁盘?我很好奇Linux和Windows的答案。
POSIX系统可以使用mlock
/munlock
将内存锁定到RAM中。在Windows上,您可以使用VirtualLock
完成同样的操作。
不过,在几乎所有情况下,您都希望让操作系统来处理这类事情。
编辑:详细说明一下,如果你想这样做的原因是性能或响应能力,不要。你想要这样做的唯一原因是防止密码或加密密钥意外写入磁盘,攻击者可能会在磁盘上获取。
类似主题
引用其中一个用户:
是的,有:让程序调用VirtualLock函数:
进程已锁定的页面将保留在物理内存中,直到过程解锁或终止它们。这些页面保证不会在它们被锁定时被写入页面文件。
我相信SetProcessWorkingSetSize函数可能也会有所帮助。
对于那些认为我是异教徒的人来说可能有用:
请注意,在记忆力一个有效的原因可能是用户正在运行CD刻录机,并且CD刻录机不断地翻页,从而导致缓冲underrun,创造了一个过山车。在这种情况下锁定内存缓冲区,这样它们就不会被调出,即使这样意味着计算机的其余部分慢到爬行,因为它仍然比给用户一个过山车要好。可以有其他有效原因也是——我的观点是,虽然通常不建议锁定记忆中的页面,有效的情况仍然存在,我不认为扼杀这个想法会对这里的OP有所帮助。
更新:查看Process Hacker的Reduce Working Set菜单选项
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将一个窗口保留在另一个应用程序窗口的前面
- 使用 ReadTheOrg 将识字程序导出为 HTML 时保留源块的内容
- 如何在内联程序集中调用函数时保留堆栈
- 多次运行程序,同时保留一个进程
- 获取提升程序选项以在函数范围之后保留
- 堆栈保留大小和堆栈提交大小的增加会提高应用程序性能吗
- 将 INT3 中断保留给视觉工作室上的应用程序异常处理程序
- C++ - 关闭应用程序后保留内存
- 在某些设备上退出应用程序后仍保留进程
- 如何保留我的unity3d程序(c#v3.5),即使c ++ dll /本机插件中有exit(1)
- 如何在 Windows 映射程序的 DLL 之前保留内存区域?
- 在新运行的 c++ 程序中重新加载文本文件时保留文本文件的内容
- 如何确定为我的程序保留了多少虚拟内存
- 在硬盘上为应用程序保留空间
- 在来自C++应用程序的成功调用之间保留dll中的状态
- 如何在QlineEdit中保留值,或者在程序关闭后保留其值的复选框?
- 是否 boost::asio::io_service 保留处理程序的顺序