LINUX.ORG.RU

mmap() освободить физическую память.


1

3

Занимаю некоторый диапазон адресов с помощью mmap() (private, anonymous) использую эту память. При доступе автоматически выделяется физическая память, но что делать если требуется освободить физическую память но не отдавать адресное пространство? (что-то типа decomit)

Можно конечно вызвать munmap и сразу mmap но это как-то не красиво, может быть есть стандартное решение?


А зачем это может понадобиться? Разьве ядро не вытеснит эту память в своп, когда ему вдруг понадобится физическая память?

Deleted
()
Ответ на: комментарий от Deleted

приложение реального времени, своп не должен использоваться в принципе.

munlock - это как раз разрешение на своп, он мне не нужен.

Ushenin
() автор топика
Ответ на: комментарий от Relan

похоже то что надо, только флага MADV_FREE в манах нет, но есть MADV_DONTNEED

который делает то что надо, полезная функция, почему то раньше она мне не попадалась.

Ushenin
() автор топика
Ответ на: комментарий от Ushenin

приложение реального времени, своп не должен использоваться в принципе.

Между замапленным файлом и свопом нет приниципиальной разницы: и то, и другое - часть адресного пространтсва, не сидящая в res

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)
Ответ на: комментарий от annulen

Между замапленным файлом и свопом нет приниципиальной разницы: и то, и другое - часть адресного пространтсва, не сидящая в res

suprise, мапить можно и без файла.

mv ★★★★★
()
Ответ на: комментарий от ttnl

Например есть массив в котором 10 млн. элементов. А потом количестово этих элементов уменьшилось 5 млн. Освободившуюся память можно вернуть системе, а адреса желательно не возвращать т.к. в дальнейшем массив снова может вырасти и его не придется перемещать.

Ushenin
() автор топика
Ответ на: комментарий от ttnl

Когда мне нужен массив указателей я использую массив указателей, когда мне нужен массив объектов я использую массив объектов.

Ushenin
() автор топика
Ответ на: комментарий от Ushenin

Что-то я сомневаюсь. Может расскажешь, что ты имеешь ввиду?

ttnl ★★★★★
()
Ответ на: комментарий от cobold

Использовать указатели там где достаточно линейного массива - оверинжиниринг, предтеча bloatware

Линейного массива, скорее всего, недостаточно:

Например есть массив в котором 10 млн. элементов.

Если бы объемы не были большими, то не встал бы вопрос об освобождении памяти.

ttnl ★★★★★
()
Ответ на: комментарий от mv

suprise, мапить можно и без файла.

Понятное дело, но тогда вопрос об освобождении физической памяти вообще не имеет смысла, так как этот участок используется еще каким-то процессом.

annulen ★★★★★
()
Ответ на: комментарий от annulen

этот участок используется еще каким-то процессом.

С чего бы?

LamerOk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.