У меня были некоторые проблемы с FreeBSD и большими mmaps.Linux не показывает те же проблемы.
При запуске программы всегда можно получить карту размером 1 ГБ.Тем не менее, есть операция перезагрузки, где файл заменен и переназначен.Новая карта обычно немного больше каждый раз, поэтому она не вписывается в старое местоположение mmap.Этот переназначение часто терпит неудачу во FreeBSD, но вряд ли когда-либо в Linux.(Чаще всего происходит сбой в Linux, использующих ASLR . Использует ли FreeBSD ASLR?)
I считают это из-за загрузки библиотек другими библиотеками, а также выделения памяти во времяпрограмма запускает этот фрагмент виртуальной памяти.Вероятно, есть некоторая особенность реализации malloc во FreeBSD или загрузки библиотеки.
Я ищу кое-что, что я могу сделать, чтобы это работало с большей вероятностью.
Одна вещь, которую я имеюРассматривается просто всегда отображать полный 1 ГБ пространства, даже если размер файла на самом деле может быть 890 МБ.Если я смогу это сделать, то у меня всегда будет 1 ГБ слот для переназначения нового файла 895 МБ.