c++ - 将内存项保留在 RAM 中,不允许将其分页到磁盘

标签 c++ c memory paging ram

有没有办法告诉计算机将某个项目保存在 ram 中,或者至少尽最大努力防止它被分页到磁盘?我希望能够做到这一点,以确保我的内存部分永远不必转到磁盘来获取其信息,因为我知道它几乎需要立即获取,但可能不会经常获取

这是在 linux 下。如果您也有其他平台的答案,我会对其他平台感兴趣

最佳答案

它是特定于操作系统的,但是...

在 POSIX 世界中,您使用 mlock and mlockall表示数据必须保存在 RAM 中,而不是换页。为此,您可能需要严格的用户权限。

注意 Linux 默认 overcommit政策虽然。如果您想确定您确实拥有分配的内存,请确保在锁定之前触摸所有内存并假设它全部在 RAM 中。

根据您真正关心这个的原因,您甚至可以完全删除交换。根据您的系统交换到的位置(DMA、PIO 等),这可能是您唯一的性能保证,无论您在应用程序中做什么。

关于c++ - 将内存项保留在 RAM 中,不允许将其分页到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17996662/

相关文章:

c - 如何在 C 中动态重新分配未知数量和大小的字符串表?

php - 允许的内存大小为 67108864 字节耗尽

c++ - 我怎样才能避免这段代码中的 void 赋值?

我可以将 scanf 与指针一起使用吗?

c++ - 将结构传递给 dll

C 程序 - 令人困惑的输出

c - Heapcrash - 通过增加指向堆的指针来段错误

c# - 我们应该在哪里寻找 C++ 常量? (出现在 MSDN 文档中)

c++ - OpenCV 2.3 C++ 基础图像处理

c++ - 如何在 Visual C++ 下编译 WinCrypt.h?