Лимит контейнера 1 ГБ при -Xmx 1 ГБ рискован: heap не покрывает всю память JVM. Native memory, Metaspace, direct buffers, code cache и стеки могут привести к OOMKill раньше Java OutOfMemoryError.
[имя] спросил: Под в Kubernetes имеет лимит памяти 1 ГБ, и JVM запущена с -Xmx 1 ГБ. Насколько жизнеспособен такой сетап?
Лимит контейнера 1 ГБ при -Xmx 1 ГБ рискован: heap не покрывает всю память JVM. Native memory, Metaspace, direct buffers, code cache и стеки могут привести к OOMKill раньше Java OutOfMemoryError.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Лимит контейнера 1 ГБ при -Xmx 1 ГБ рискован: heap не покрывает всю память JVM. Native memory, Metaspace, direct buffers, code cache и стеки могут привести к OOMKill раньше Java OutOfMemoryError.
Нужен запас между максимальным heap и container limit, рассчитанный по реальному RSS и нагрузке. Универсального процента для всех сервисов нет: важны число потоков, библиотеки и буферы. Проверьте container-awareness версии JVM и единицы лимита. Повышение Xmx до полного лимита не помогает утечкам и может сделать процесс менее устойчивым.