什么是mmap的大小限制

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

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

2)经过一段时间的运行后,我认为进程的虚拟内存地址空间会有些碎片化。 这会影响我能在这个过程中做mmap()的最大尺寸吗?

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

Solutions Collecting From Web of "什么是mmap的大小限制"

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