[ZGC]Почему используемая память намного больше, чем файл дампа?

Вот некоторая информация:

  1. Версия Linux 3.18.6-2.el7.centos.x86_64, openjdk-11.0.2
  2. используя ZGC и -Xms16384M -Xmx16384M
  3. Верхняя команда показывает: 17,013 т VIRT, 0,016 т RES, 0,015 т SHR, 35,2% CPU, 13,0% MEM
  4. размер дампа кучи составляет 83M (используя команду jcmd)
  5. Сводка VisualVM показывает размер кучи 55M
  6. В большинстве ситуаций GC:Сборка мусора (упреждающая) 1808M(11%)->166M(1%)

Я искал и читал следующие ответы, но до сих пор не могу решить свои сомнения.

  1. Сборщик мусора Java ZGC ИСПОЛЬЗУЕТ много памяти
  2. Максимальный размер кучи ZGC превышает физическую память
  3. Почему мой размер дампа кучи Java так велик меньше используемой памяти?

person huaiyu    schedule 28.12.2020    source источник
comment
Почему нет? Что вы ожидаете вместо этого?   -  person apangin    schedule 28.12.2020
comment
Использование памяти будет увеличиваться с каждым днем, хотя увеличение уменьшается, эта ситуация продолжается около недели. @apangin   -  person huaiyu    schedule 29.12.2020
comment
В чем именно заключается ваш вопрос? Какие сомнения? Как сказано в ссылке 3, дамп содержит только живые объекты (т.е. после сборки мусора).   -  person Aleksandr Dubinsky    schedule 16.02.2021


Ответы (1)


Я не уверен, что именно означает пункт 6, было бы полезнее, если бы вы показали несколько строк из файла журнала сборщика мусора. Я также не использую VisualVM, поэтому не могу комментировать это.

Так что этот ответ в основном догадка.

Память, используемая JVM, разделена на разные регионы, самое главное у вас есть куча и стек. Но все же вы увидите, что куча будет больше, чем то, что вы настроили с помощью -Xmx, потому что есть область, называемая метапространством (или постоянным поколением в старых JVM), которая содержит статическую информацию, такую ​​​​как классы или, например, строковые литералы из вашего исходного кода. И Metaspace находится поверх обычной кучи. Я предполагаю, что некоторые инструменты считают это кучей, а некоторые нет. И это может быть то, откуда вы получаете разные цифры.

person EasterBunnyBugSmasher    schedule 28.12.2020
comment
Спасибо за ваш ответ. Пункт 6 взят из журнала ZGC, это информация о триггере gc. - person huaiyu; 29.12.2020