Головоломка с потреблением памяти Java

Я очень озадачен проблемой, которую я наблюдаю в нашем серверном приложении.

  • Сервер представляет собой машину CentOS 7 с 48 ядрами и 64 ГБ памяти.
  • Java — это OpenJDK 8.
  • Сервер приложений — WildFly 9.
  • Память и параметры GC: -Xss256k -Xmx8192m -XX:+UseG1GC -XX:MaxGCPauseMillis=20

Основной вариант использования получает запросы CORBA в одном Java-процессе и делегирует их, вызывая для обработки удаленные EJB-компоненты в WildFly.1 Из-за большого количества параллельных запросов такого типа мы увеличили количество удаленных подключений в подсистема ejb3.0 конфигурации WildFly до 1000: <max-threads count="1000" />

Теперь странная вещь, которую мы наблюдаем, заключается в том, что размер кучи (например, при наблюдении через VisualVM) составляет 8 ГБ, как установлено, и GC постоянно работает, так что используется около 6-7 ГБ кучи, а количество потоков относится к настройке. И память, и потоки не увеличиваются со временем. В то же время, наблюдая за PID с top после некоторого времени работы, мы видим, что используются потрясающие 42G!

Может ли кто-нибудь объяснить мне, как возможно, что процесс java потребляет гораздо больше памяти, чем установлено свойствами X JVM?


1 Я знаю, что мы говорим об очень старой технологии, но приложение такое, какое оно есть, и мы не можем это изменить в ближайшем будущем. Он должен продержаться некоторое время в производстве, пока у нас не появится возможность перейти на более современную технологию.


person Alexander Rühl    schedule 23.01.2018    source источник
comment
Вы можете столкнуться с проблемами фрагментации: ibm.com/developerworks /сообщество/блоги/kevgrig/entry/   -  person C-Otto    schedule 23.01.2018
comment
может быть, приложение выделяет много данных вне кучи?   -  person Sleiman Jneidi    schedule 23.01.2018
comment
Связано: stackoverflow.com/questions/34180422/   -  person C-Otto    schedule 23.01.2018
comment
@ C-Otto Я также подозреваю, что речь идет о родной памяти, например. Java NIO, но как я могу узнать, что именно вызывает выделение?   -  person Alexander Rühl    schedule 24.01.2018