n1ro°
RU

Ошибки · Решение

Linux errno ENOMEM: что означает и как исправить

Системе или процессу не удалось выделить требуемую память.

Редакция N1RO · Проверено

Короткий ответ

В 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 события.

Безопасные шаги

  1. Снизьте пиковое потребление или размер отдельных allocation.
  2. Исправьте утечку, если память растёт без освобождения.
  3. Увеличивайте лимит памяти только после подтверждения нормального рабочего набора.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если errno ENOMEM воспроизводится после проверки системного вызова и окружения, приложите strace-фрагмент, путь/ресурс и kernel log владельцу соответствующего subsystem.

Похожие ошибки

  • /errors/linux-errno-esrch/
  • /errors/linux-errno-eintr/
  • /errors/linux-errno-eio/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.