Как вернуть память из процесса в ОС

У меня проблема с управлением памятью в разных операционных системах.

Моя программа - это сервер, который выполняет некоторую обработку, которая может занимать несколько ГБ памяти. После этого он освобождает большую часть памяти, ожидая несколько часов, пока не поступит другой запрос.

В AIX и Solaris я наблюдаю следующее поведение:

Когда я освобождаю память, память не возвращается обратно в операционную систему. Объем виртуальной памяти, используемой процессом, всегда увеличивается - никогда не уменьшается. То же самое относится и к физической памяти, вплоть до своего предела. Таким образом, похоже, что мы используем всю эту память и в спящем режиме.

Когда эту память можно вернуть обратно в ОС? Как я могу это сделать?

Linux отличается: кажется, что он иногда возвращает память, но я не могу понять, когда и как. У меня есть, например, сценарий, в котором процесс перед запросом составлял 100 МБ, затем 700 МБ на пике и после освобождения всего, что было до 600 МБ. Я не понимаю этого - если Linux возвращает память операционной системе, почему не все это?

Ответы на вопрос(5)

Ваш ответ на вопрос