В следующий раз я должен обратить внимание туда, где я устанавливаю Ubuntu. Если это находится на внешние медиа, как в этом случае, я или должно оставить диск включенным, хотя я не полагаю, что можно с готовностью загрузить ОС через USB или установить Ubuntu локально.
C-библиотечная-функция free()
но не имеет к, может возвратить память ядру.
Некоторые реализации malloc()
переместите границу между "кучей" и в других отношениях неиспользованным адресным пространством ("системное повреждение") через sbrk()
системный вызов, затем скупо выдайте мелкие кусочки тех больших выделений. Не получая каждую меньшую освобожденную часть, free()
не может действительно возвратить память ОС.
Та же самая причина относится malloc()
реализации, которые не используют sbrk(2)
, но, возможно, используйте mmap("/dev/zero")
или что-то.. Я не могу найти ссылку, но я, кажется, помню что один или другой из используемого BSD's mmap()
тот способ получить страницы памяти. Тем не менее, free()
не может возвратить страницу операционной системе, если каждое подвыделение не освобождено программой.
Некоторые malloc()
реализации действительно возвращают память системе: ChorusOS(?), по-видимому, сделал. Не ясно, переместило ли это системное повреждение, или munmap()'ed
страницы.
Вот статья о средстве выделения памяти, которое улучшает производительность "агрессивным отказом от свободных страниц к диспетчеру виртуальной памяти". Показ слайдов для разговора о средстве выделения.