gpt4 book ai didi

c++ - 当你用完 mlockall 设置的 ram 时会发生什么?

转载 作者:太空狗 更新时间:2023-10-29 22:53:42 24 4
gpt4 key购买 nike

我正在开发一个需要大量内存才能进行批处理的 C++ 应用程序。(> 20GB)

我的一些客户遇到了内存限制,有时操作系统开始交换并且总运行时间加倍或更糟。

我读到我可以使用 mlockall 来防止进程被换出。当进程内存需求以这种方式接近或超过可用物理内存时会发生什么?

我想答案可能是特定于操作系统的,所以请在你的答案中列出操作系统。

最佳答案

将发生的事情正是您所看到的 - 分配更多内存失败,因为您的应用程序已经获得了系统中的所有物理内存,并且由于这些无法换出,malloc 除了失败之外别无他法。这种行为在大多数现代操作系统中都是相同的。

如果你想使用 mlockall(你真的不应该),你最好确保系统具有所需的物理内存量,否则你将陷入痛苦的世界 - 其他进程的 malloc 也会失败这些可能会使您的系统崩溃。

关于c++ - 当你用完 mlockall 设置的 ram 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com