2013-10-14 30 views
0

我嘗試使用shmget()分配22MB的共享內存,但它與errno ENOMEM退出。頂部的輸出的第一行看起來好像有足夠的內存:shmget返回ENOMEM與12GB免費

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一起運行。任何想法可能是什麼原因?

回答

0

以下sysctl變量會影響共享內存:kern.sysv.shmmax,kern.sysv.shmmin,kern.sysv.shmmni,kern.sysv.shmseg,kern.sysv.shmall。這裏kern.sysv.shmall通常應該設置爲至少kern.sysv.shmmax除以4096.