tra*_*325 2 c linux memory-management
我正在尝试mmap一些大文件但失败了:我无法mmap任何大于2.7 GB的文件.
通过这样做ulimit -a,它说我的虚拟内存是无限的.然后cat /proc/meminfo我说它我的系统有3GB Memfree和2GB Swapfree.
我假设我可以mmap一个高达5GB的文件.我什么都试过了我在互联网上了解到,包括使用MAP_NORESERVE标志,并设置overcommit_memory到1.它仍然是一样的Cannot allocate memory.什么可能出错?
我使用64位CPU和32位Linux系统.如果您需要更多信息,请告诉我.我真的很感激任何建议或提示.
sec*_*ask 10
您需要使用64位操作系统,因为32位操作系统没有足够的地址空间.
编辑:虽然您的系统有一些可用的物理内存,但32位进程只能达到4GB,内核驱动程序的内核保留大约1-2GB ......因此32位应用程序的用户空间通常为2GB.