Ошибки · Решение
Linux errno ENOMEM: что означает и как исправить
Системе или процессу не удалось выделить требуемую память.
Короткий ответ
В Linux errno ENOMEM означает «Cannot allocate memory». Сначала найдите системный вызов, который вернул код, затем проверяйте условия именно этой операции. Числовое значение errno не следует считать переносимым между архитектурами: ориентируйтесь на символическое имя.
Что означает ошибка
Системе или процессу не удалось выделить требуемую память.
Возможные причины
- Недостаточно доступной RAM/swap для запрошенного выделения.
- Процесс достиг memory limit cgroup или адресного пространства.
- Запрос на mmap/структуры ядра не может быть удовлетворён при текущем давлении на память.
Что проверить
- Проверьте memory.current/memory.events для cgroup или лимит контейнера.
- Сравните размер неудачного allocation с RSS, virtual memory и доступной памятью.
- Посмотрите kernel log на OOM и сопутствующие memory pressure события.
Безопасные шаги
- Снизьте пиковое потребление или размер отдельных allocation.
- Исправьте утечку, если память растёт без освобождения.
- Увеличивайте лимит памяти только после подтверждения нормального рабочего набора.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Если errno ENOMEM воспроизводится после проверки системного вызова и окружения, приложите strace-фрагмент, путь/ресурс и kernel log владельцу соответствующего subsystem.
Похожие ошибки
- /errors/linux-errno-esrch/
- /errors/linux-errno-eintr/
- /errors/linux-errno-eio/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.