Хотелось узнать, что, если между максимальным объемом памяти, которое может быть использовано для сопоставления файла с помощью mmap(), и размерами ОЗУ в поле linux , Я попытался использовать карту памяти для некоторых файлов, и обнаружил, что я не могу отображать больше файлов, когда использование «Mapped» приближается к «MemTotal» (просматривается через cat/proc/meminfo).Использование памяти при загрузке файлов через mmap()
С/Proc/MemInfo на 64-битной Linux, коробке:
MemTotal: 32909628 кБ
MemFree: +221744 кБ
Буферы: 1800 Кбайт
Подключенные: 31642928 кБ
CommitLimit: 38012616 kB
Committed_AS: 42641120 Кбайт
VmallocTotal: 536870911 кБ
VmallocUsed: 299920 кБ
VmallocChunk: 536568999 кБ
Итак, я прав, полагая, что "Подключенные" использование никогда не превысит «MemTotal». Смятение, которое у меня есть, я придерживаюсь мнения, что память всегда виртуальна, когда мы mmap файл.
Спасибо!
Добавил в мой вопрос дополнительную информацию. По ограничению адресного пространства для OS, вы имеете в виду ограничение виртуальной памяти. Но в то время у меня, похоже, много виртуальной памяти. – sim
Я имею в виду предел того, сколько адресного пространства может обрабатывать один процесс за один раз. – bdonlan
Я бы подумал, что это будет в 64-битной линейке Linux. Моя программа загружает только 1,5 ГБ файла в память. – sim