Наши компьютеры имеют все больше встроенной памяти, чем когда-либо.
Скорее всего, это правда, независимо от того, когда вы читаете это.
Тем не менее, независимо от того, сколько у вас памяти, этого никогда не бывает достаточно.
Вы можете заполнить свой компьютер или сервер всей оперативной памятью, которая потребуется, и она всегда найдет себе применение.
В большинстве случаев это хорошо.
В конце концов, какой смысл всей этой оперативной памяти, если вы ее не используете?
С другой стороны, если вы ограничены ресурсами, нехватка памяти может стать проблемой.
Прежде чем начать искать способы освобождение памяти, вы должны убедиться, что же на самом деле использует все эти ресурсы.
Из-за того, как Linux обрабатывает память, может показаться, что что-то использует всю доступную память.
Как объясняет Linux Ate My RAM, команда top, показывающая, что у вас недостаточно памяти, может не означать то, что вы подумаете на самом деле.
По умолчанию Linux выделяет неиспользуемую память для кэширования диска, что фактически помогает ускорить работу вашего компьютера.
Тем не менее, могут быть некоторые проблемные сервисы или приложения, которые на самом деле используют больше оперативной памяти, чем должны.
Диагностика использования памяти
Для диагностики вашей памяти вам нужно будет использовать несколько разных команд.
Команда top удобна для просмотра любых приложений, которые могут потреблять слишком много оперативной памяти – просто не полагайтесь исключительно на статистику PhysMem, отображаемую командой top.
free -m
ps aux
Исправление чрезмерного использования памяти
Есть несколько распространенных причин в случаях, когда речь идет о большом использовании памяти в Linux.
Одним из главных нарушителей является Java.
Используете ли вы официальную среду выполнения Java или предоставленную GNU альтернативу, и то и то может вызвать проблемы.
Если вы сталкиваетесь с этим на сервере, это может быть вызвано JBoss или Tomcat.
Вы найдете их файлы конфигурации где-то вроде следующих путей:
/usr/local/jboss/bin/run.conf /usr/local/tomcat/bin/setenv.sh
Другими виновниками могут быть Apache или MySQL.
Целью данной статьи не является показать, как именно их настроить, но вы можете проверить логи на наличие ошибок или предупреждений от этих служб.
Заключение
Если вы ищете повышение производительности или исправление проблемы вы должны понимать, что память не всегда может быть главным виновником.