作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个需要大量内存才能进行批处理的 C++ 应用程序。(> 20GB)
我的一些客户遇到了内存限制,有时操作系统开始交换并且总运行时间加倍或更糟。
我读到我可以使用 mlockall 来防止进程被换出。当进程内存需求以这种方式接近或超过可用物理内存时会发生什么?
我想答案可能是特定于操作系统的,所以请在你的答案中列出操作系统。
最佳答案
将发生的事情正是您所看到的 - 分配更多内存失败,因为您的应用程序已经获得了系统中的所有物理内存,并且由于这些无法换出,malloc 除了失败之外别无他法。这种行为在大多数现代操作系统中都是相同的。
如果你想使用 mlockall(你真的不应该),你最好确保系统具有所需的物理内存量,否则你将陷入痛苦的世界 - 其他进程的 malloc 也会失败这些可能会使您的系统崩溃。
关于c++ - 当你用完 mlockall 设置的 ram 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190579/
我们面临一个用例,我们需要在 S3 上存储用户的 secret 图像。现在 S3 可以通过 HTTP 访问,如果我们授予对对象的读取权限,它们将通过 Web 提供给全世界。我们需要将图像/文件仅限于该
我是一名优秀的程序员,十分优秀!