有没有办法告诉计算机将某个项目保存在 ram 中,或者至少尽最大努力防止它被分页到磁盘?我希望能够做到这一点,以确保我的内存部分永远不必转到磁盘来获取其信息,因为我知道它几乎需要立即获取,但可能不会经常获取
这是在 linux 下。如果您也有其他平台的答案,我会对其他平台感兴趣
最佳答案
它是特定于操作系统的,但是...
在 POSIX 世界中,您使用 mlock and mlockall表示数据必须保存在 RAM 中,而不是换页。为此,您可能需要严格的用户权限。
注意 Linux 默认 overcommit政策虽然。如果您想确定您确实拥有分配的内存,请确保在锁定之前触摸所有内存并假设它全部在 RAM 中。
根据您真正关心这个的原因,您甚至可以完全删除交换。根据您的系统交换到的位置(DMA、PIO 等),这可能是您唯一的性能保证,无论您在应用程序中做什么。
关于c++ - 将内存项保留在 RAM 中,不允许将其分页到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17996662/