У меня есть голодное приложение. Я позволяю ему работать в ночное время в системе с 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:
была выделена для новых приложений. Можете ли вы интерпретировать это для меня?
Данные кэширования также являются частью используемой памяти. После завершения программы данные, загруженные с диска вашей программой, станут частью кеша. Таким образом, ваша система не будет освобождать данные, но она потеряет кешированные данные, если ваша память понадобится снова. Более или менее забавная страница, описывающая проблему.
How do I see how much free ram I really have?
) Является лиfree
столбецbuffers/cache
моей общей свободной памятью?