Внутренний раздел встроенной памяти Java

#java #hadoop #memory-leaks #hdfs #namenode

#java #hadoop #утечки памяти #hdfs #namenode

Вопрос:

Запустив процедуру Hadoop namenode в JDK 1.8.0.92 с Xmx и Xmx = 75 Гб, мы наблюдали скачок объема системной памяти в течение x интервала. И постепенно произошел ООМ.

В процессе отладки мы обнаружили следующее:

RSS поднялся выше, чем Xmx

Это куча — нет, это не куча (можно увидеть использование в JMX, которое находится под контролем)

Это не куча или утечка — из дампа кучи и jmap -histo утечки не наблюдается.

Что тогда? Включен NMT в namenode proc env.

Что тогда? Можно видеть, что рост происходит во внутренней секции встроенной памяти, и картина следующая — когда количество потоков no достигает максимума, объем выделенной памяти увеличивается, и он увеличивается постепенно.

Исправления: Пробовал -XX: MaxDirectMemorySize = 3g (Без изменений, по-прежнему это нарушение лимита) Пробовал -Djdk.nio.maxCachedBufferSize (Пробовал с jdk1.8.0.192, при включении этой опции все еще наблюдается утечка) MALLOC_ARENA_MAX — По умолчанию для Hadoop-configs установлено значение 4.sh пробовал с 1 и 2, все еще происходит утечка.

Вопросы

Как управлять внутренним разделом встроенной памяти?

Как указать причину этой проблемы и использование этого внутреннего раздела?

Как определить значение Malloc в JVM?