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

4 ответа4

3

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

2

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

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

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

1) Это может сделать память, которая удерживала программу свободной. Для этого требуется специальная операция, которая делает его свободной, и специальная операция, позволяющая использовать его снова. И если программа запустится снова, ее нужно будет загрузить с диска.

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

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

Итак, короткая версия - вам не нужна свободная оперативная память.

1
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-разрядную версию.)

0

Пытаться :

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .