Как освободить память в linux

когда я использую top, чтобы увидеть использование памяти, у меня есть 65 ГБ оперативной памяти, но только 1,3 ГБ свободного и оставшегося показано, как используется. Когда я запустил свою программу, это дает ошибку недостаточности памяти. Хотя ни одна другая программа не использует оставшиеся 63,7 ГБ оперативной памяти, она удерживается. как я могу получить бесплатно неиспользуемую оперативную память?

5
задан user35153
источник

4 ответов

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

3
отвечен Ignacio Vazquez-Abrams 2010-04-25 10:32:48
источник

Если вы хотите, чтобы память не использовалась, выньте ее из компьютера и сядьте на стол.

существует распространенное заблуждение, что свободная оперативная память хороша. На самом деле, каждый свободный байт ОЗУ представляет собой отказ системы эффективно использовать эту ОЗУ. Бесплатный ОЗУ не сделает вашу систему быстрее.

рассмотрим сильно упрощенный сценарий. Программа выполняется, а затем завершается. Ваша операционная система имеет два варианта:

1) он может освободите память, в которой хранилась программа. Это требует специфической деятельности для того чтобы сделать ее свободным, и специфической деятельности позволить ей быть использованным снова. И если программа снова запустится, ее придется загружать с диска.

2) не удалось освободить память, которая удерживала программу. Для этого требуется no операция, чтобы сделать его свободным, но конкретная операция может потребоваться позже, чтобы переместить его на другое использование. И если программа снова запустится, ее не придется загружать с диска.

таким образом, при большинстве условий, Вариант 2 является чистым выигрышем. Это экономит операцию, если память должна быть использована для чего-то еще (он может просто переключаться с одного использования на другое в один шаг, а не два шага, один, чтобы сделать его свободным и один, чтобы сделать его не свободным). И он может сохранить программу От быть нагруженным внутри от диска, который был бы огромным выигрышем.

Итак, короткая версия, вы не хотите бесплатную оперативную память.

2
отвечен David Schwartz 2011-08-24 08:50:25
источник
dylan@oxide:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           123        120          3          0         34         35
-/+ buffers/cache:         50         72
Swap:          243          0        243

строка + / - буферов - это фактическое использование памяти. Какую программу вы пытаетесь запустить? Вполне возможно, что на самом деле это не недостаток доступной памяти, а какая-то другая проблема.

возможно, вы используете 32-битную операционную систему в режиме PAE на этой машине? Приложению может потребоваться более 2 ГБ виртуального адресного пространства, которое не может предоставить PAE. (Перекомпиляция ядра может увеличить это до 3 ГБ, но вам действительно лучше перейти на 64-бит, если это случай.)

1
отвечен Jessie 2010-04-25 10:42:48
источник

попробуй :

echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

это мгновенно освободит много памяти.

0
отвечен mnmnc 2012-08-20 13:55:02
источник

Другие вопросы linux memory top