I am using mmap()
to map a shared memory object to a process. My question has two parts:
1) what is the size limit for mmap()
to a linux process? (is there such limit?)
2) after the process running a while, I think the process virtual memory address space will be somehow fragmented. Will this impact the max size I can do mmap()
in this process?
The linux kernel used is 2.6.27
. The size of the shared memory object is around 32MB. I am trying to access what is the possibility that mmap()
fails with such shared memory object due to no enough virtual address space.
There is no restriction on mmap
size but would depend on the existing address space used by the given process. But it is highly suggested that you dont mmap
to a large contiguous virtual address space. Another suggestion would be to use the mmap
"just-in-time" when a specific physical address (or a device address) is accessed and unmap once done
/proc/sys/vm/overcommit_memory
controls the maximum on Linux
I have explained this in detail at: maximum memory which malloc can allocate
Basically, the value of 1
allows arbitrary virtual allocations, while 0
and 2
have more complicated limit calculations.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With