Вступить в клуб →
сложнаявопросJVM в контейнере, сборка и зависимости

Куча занята на 60%, а контейнер всё равно убивают за превышение памяти

Лимит контейнера 2 ГиБ, -Xmx1500m. Метрики показывают, что куча занята примерно на 900 МБ. Под нагрузкой сервис поднимает 400 потоков веб-сервера и пул на 200 потоков для внешних вызовов, использует прямые буферы Netty — и контейнер получает OOMKilled.

Что здесь не учтено?

  • Память вне кучи: стеки потоков, метаданные классов, прямые буферы — всё идёт в лимит
  • Метрики кучи врут, на самом деле она заполнена полностью
  • Kubernetes считает лимит только для кучи, остальное — ошибка планировщика
  • Сборщик мусора не успевает освободить кучу при 400 потоках

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела