首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mmap失败,并显示ENOMEM

mmap失败,并显示ENOMEM
EN

Stack Overflow用户
提问于 2020-02-19 15:54:48
回答 1查看 353关注 0票数 1

我在我们的应用程序中使用mmap()作为:

代码语言:javascript
复制
 mmap(NULL, get_size(), PROT_NONE,  MAP_ANONYMOUS | MAP_SHARED, -1, 0);

但我在这里的意图只是保留get_size()指定的内存量,但我并不打算使用它。有时我看到这个mmap()会因为ENOMEM而失败。问题是,当我们只是尝试保留地址空间,而不是实际使用它时,为什么在这里使用ENOMEMmmap()会失败。是因为MAP_SHARED吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-19 18:14:08

ulimit -v中,您可以看到进程的虚拟内存大小是有限制的。如果您达到了该限制,您可以尝试使用ulimit -v unlimited删除它。您还可以使用getrlimit/setrlimit POSIX函数以编程方式获取和设置限制。

系统默认和硬限制是在/etc/security/limits.d目录中的/etc/security/limits.conf和文件中设置的。

mmapENOMEM而失败的另一个原因是超出了由sysctlvm.max_map_count配置选项控制的进程的最大内存映射数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60295424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档