Оперативная память (RAM)
Быстрая рабочая память компьютера, где хранятся запущенные программы и данные, с которыми они работают прямо сейчас.
Оперативная память (RAM, Random Access Memory) — рабочий стол компьютера. В ней находятся запущенные программы и данные, с которыми они работают прямо сейчас: открытые документы, ответы базы данных, кэш, вкладки браузера. Оперативная память очень быстрая, но энергозависимая: при выключении питания все ее содержимое пропадает. Долговременно данные хранятся на накопителях — SSD или жестких дисках.
Иерархия памяти
| Уровень | Время доступа (порядок) | Объем (порядок) |
|---|---|---|
| Регистры и кэш процессора | Доли наносекунды — наносекунды | Килобайты — десятки мегабайт |
| Оперативная память | Около 100 наносекунд | Гигабайты — терабайты |
| SSD NVMe | Десятки микросекунд | Терабайты |
| Жесткий диск | Миллисекунды | Десятки терабайт |
Каждый уровень вниз — дешевле и больше, но в разы медленнее. Поэтому системы стараются держать самые нужные данные как можно ближе к процессору, а кэширование в памяти — один из главных способов ускорения. Хранилище Redis, например, держит все данные именно в оперативной памяти.
Характеристики
- Объем — сколько данных помещается одновременно.
- Поколение и частота — DDR4, DDR5: новее — выше пропускная способность.
- ECC — память с исправлением ошибок. В серверах она обязательна: случайная ошибка в одном бите может незаметно испортить данные в базе.
Что происходит, когда памяти не хватает
- Подкачка (swap). Операционная система выгружает редко используемые данные на диск. Это спасает от падения, но работа замедляется в сотни раз.
- Аварийное завершение. Если памяти не хватает совсем, ядро Linux принудительно завершает самый «прожорливый» процесс — часто это база данных или приложение.
Проверить память на сервере Linux можно командой:
# Командная строка Linux
free -h
Важно смотреть не на «свободно», а на «доступно» (available): Linux занимает свободную память под кэш файлов и отдает ее программам по первому требованию.
Память и приложения
Если программа со временем занимает все больше памяти и не освобождает ее, это утечка памяти. В языках со сборкой мусора память освобождается автоматически, но объем, выделенный приложению, все равно нужно настраивать под реальную нагрузку. Потребление памяти серверами и приложениями выводят на графики мониторинга, чтобы заметить рост до того, как система начнет тормозить.