mmap 的大小限制是多少

问题描述 投票:0回答:3

我正在使用

mmap()
将共享内存对象映射到进程。我的问题有两个部分:

1) Linux 进程的

mmap()
的大小限制是多少? (有这样的限制吗?)

2)进程运行一段时间后,我认为进程虚拟内存地址空间会出现某种碎片。这会影响我在此过程中可以做的最大尺寸吗

mmap()

使用的linux内核是

2.6.27
。共享内存对象的大小约为 32MB。我正在尝试访问由于没有足够的虚拟地址空间而导致此类共享内存对象失败的可能性。
    

linux mmap
3个回答
2
投票

mmap()控制Linux上的最大值



我已经详细解释过这一点:

malloc可以分配的最大内存

基本上,

/proc/sys/vm/overcommit_memory

的值允许任意虚拟分配,而

1
0
有更复杂的限制计算。
    


1
投票
2

大小没有限制,但取决于给定进程使用的现有地址空间。但强烈建议您不要使用大的连续虚拟地址空间。另一个建议是在访问特定物理地址(或设备地址)时使用

mmap
“即时”,并在完成后取消映射
    
在我在几台 x86_64 机器上进行的实验中(

mmap

0
投票
128 TiB

    
© www.soinside.com 2019 - 2024. All rights reserved.