Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux mmap的大小限制是多少_Linux_Mmap - Fatal编程技术网

Linux mmap的大小限制是多少

Linux mmap的大小限制是多少,linux,mmap,Linux,Mmap,我正在使用mmap()将共享内存对象映射到进程。我的问题分为两部分: 1) linux进程的mmap()大小限制是多少?(有这样的限制吗?) 2) 在进程运行一段时间后,我认为进程虚拟内存地址空间将以某种方式被碎片化。这是否会影响我在此过程中可以执行的最大大小mmap() 使用的linux内核是2.6.27。共享内存对象的大小约为32MB。我试图访问mmap()由于没有足够的虚拟地址空间而导致此类共享内存对象失败的可能性 对mmap大小没有限制,但取决于给定进程使用的现有地址空间。但是强烈建议您

我正在使用
mmap()
将共享内存对象映射到进程。我的问题分为两部分:

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

2) 在进程运行一段时间后,我认为进程虚拟内存地址空间将以某种方式被碎片化。这是否会影响我在此过程中可以执行的最大大小
mmap()


使用的linux内核是
2.6.27
。共享内存对象的大小约为32MB。我试图访问
mmap()
由于没有足够的虚拟地址空间而导致此类共享内存对象失败的可能性

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

/proc/sys/vm/overmit\u内存
控制Linux上的最大值

我已在以下网站详细解释了这一点:


基本上,
1
的值允许任意虚拟分配,而
0
2
的极限计算更为复杂。

您唯一关心的应该是内存和交换量非常低的系统,或者是没有PAE的32位系统,其中您的应用程序占用大量虚拟内存,除此之外,我相信发生这种情况的可能性很低。如果您能提供更多有关应用程序内存使用情况的详细信息,这将有所帮助。实际上,限制是当前未分配地址空间的最大范围,仅次于程序文本、数据、堆、堆栈、所有共享库及其文本/数据/堆、内核和任何其他类型的“常用”映射……@twalberg Yes,这是真的。我想知道在所有的虚拟内存空间的常规计算之后,剩余空间的大小是多少。特别是在应用程序运行很长一段时间后,它将如何随时间变化。CPU是32位Intel CPU。我相信它有PAE。