Размер кучи Java в 20 раз больше, чем -Xmx - Как это возможно? - PullRequest
0 голосов
/ 05 сентября 2018

Экземпляр Elasticsearch работает на виртуальной машине с 32-ядерным процессором и 120 ГБ памяти.

Пока я отлаживал проблему с производительностью, нашел этот результат для htop

Использование памяти enter image description here

Упругий процесс поиска Java, занимающий 52% памяти ~ 60 ГБ enter image description here

jstat результат

jstat -gc 11660
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
195904.0 195904.0  0.0   30111.4 1567680.0 1146433.0 59906496.0 1432277.9  73684.0 63888.5  0.0    0.0   2122077 150951.979   6      0.837 150952.816

Настройки -Xms2g и -Xmx2g хорошо видны для процесса Java.

Как это возможно? Как использование памяти может превышать -Xmx2g?

1 Ответ

0 голосов
/ 05 сентября 2018

То, что top и htop не показывают, это уровень кучи JVM, который отличается от общего объема физической памяти, используемой процессом Java.

Внизу Lucene отобразит файлы сегментов индекса непосредственно в память без использования кучи. Таким образом, в вашем Java-процессе Elasticsearch вполне может использовать кучу 2 ГБ, но лежащая в основе библиотека Lucene может потреблять гораздо больше памяти в зависимости от размера сегментов, которые необходимо загрузить в память.

Еще один ответ на ту же тему: https://stackoverflow.com/a/35232221/4604579

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...