Почему мои системы не освобождают буферы / кеш

0

У меня есть голодное приложение. Я позволяю ему работать в ночное время в системе с 32 ГБ оперативной памяти. Кроме того, он запускал free -m -s 20 вместе с ним, чтобы увидеть, как изменяется состояние памяти. Мое приложение было единственным, что я начал вручную после перезапуска моего Ubuntu (за исключением терминала, конечно). давайте посмотрим на части выпуска:

при запуске приложения:

             total       used       free     shared    buffers     cached
Mem:         32100       1428      30671         35         69        594
-/+ buffers/cache:        765      31335
Swap:        32693          0      32693

перед тем, как приложение закончится:

             total       used       free     shared    buffers     cached
Mem:         32100      31860        240         84          2      17420
-/+ buffers/cache:      14437      17663
Swap:        32693         12      32681

сразу после завершения приложения:

             total       used       free     shared    buffers     cached
Mem:         32100      18723      13376         84          2      17434
-/+ buffers/cache:       1285      30814
Swap:        32693         12      32681

и статус остается таким же в течение многих часов, пока я не вернусь утром.

Мой вопрос: почему большая часть моей памяти по-прежнему считается free частью buffers/cache? когда эта часть памяти станет free частью всего Mem: снова?

Затем я открыл браузер, среду IDE и другое приложение GUI, чтобы узнать, как и откуда выделена память для новых приложений:

             total       used       free     shared    buffers     cached
Mem:         32100      20378      11721         88        160      18075
-/+ buffers/cache:       2143      29956
Swap:        32693         12      32681

По-видимому, свободная память от Mem: а также buffers/cache: была выделена для новых приложений. Можете ли вы интерпретировать это для меня?

Теги:
memory
memory-management

1 ответ

2
Лучший ответ

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

  • 0
    Я чувствую, что мне настоятельно рекомендуется опубликовать эту ссылку в Twitter
  • 0
    @TheSlayer Я перешел по ссылке, которую вы упомянули в своем ответе, вы согласны с последней частью? ( How do I see how much free ram I really have? ) Является ли free столбец buffers/cache моей общей свободной памятью?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню