【问题标题】:shmget return ENOMEM with 12GB freeshmget 返回 ENOMEM 12GB 免费
【发布时间】:2013-10-14 15:08:59
【问题描述】:

我尝试使用 shmget() 分配 22MB 的共享内存,但它以 errno ENOMEM 退出。 top 输出的第一行看起来好像有足够的内存:

Processes: 114 total, 4 running, 110 sleeping, 579 threads
Load Avg: 0.50, 0.42, 0.35  CPU usage: 0.24% user, 0.60% sys, 99.15% idle
SharedLibs: 17M resident, 5356K data, 0B linkedit.
MemRegions: 20375 total, 1361M resident, 59M private, 1176M shared.
PhysMem: 1487M wired, 1887M active, 576M inactive, 3950M used, 12G free.
VM: 286G vsize, 1052M framework vsize, 123007(0) pageins, 0(0) pageouts.

该程序在 OS X 版本 10.8.5 上运行。知道可能是什么原因吗?

【问题讨论】:

    标签: macos memory system errno enomem


    【解决方案1】:

    以下 sysctl 变量会影响共享内存:kern.sysv.shmmax、kern.sysv.shmmin、kern.sysv.shmmni、kern.sysv.shmseg、kern.sysv.shmall。这里 kern.sysv.shmall 一般应该设置为至少 kern.sysv.shmmax 除以 4096。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 2021-03-11
      • 2018-05-24
      相关资源
      最近更新 更多