почему существует разница в размере дампа кучи, сгенерированного jmap и jcmd? - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь получить дамп кучи, используя следующие 2 команды

  1. jcmd $ pid GC.heap_dump /tmp/filename.dump
  2. jmap -dump: format = b, file = / tmp / filename.dump $ pid

jcmd создает размер файла ~ 300M, а jmap - размер файла ~ 1.4G. почему это разные размеры, есть ли у нас какая-либо дополнительная информация в jmap? я пропускаю некоторые аргументы в jcmd?

JDK - 1.8.0_162

Xms и Xmx 4G

1 Ответ

0 голосов
/ 30 июля 2019

JMAP получил дамп всех объектов, а JCMD - только дамп живых объектов.

Использование команды JCMD: При использовании этой команды вы должны передать опцию -all. В противном случае он запросит полный сборщик мусора и создаст дамп только живых объектов.

Использование команды JMAP: При использовании этой команды вам не нужно ничего указывать, так как она по умолчанию создает дамп кучи всех объектов. Если вам нужны только живые объекты, вы можете передать опцию 'live' в JMAP.

JCMD - без каких-либо опций состояния объекта - по умолчанию он создает дамп только живых объектов. JMAP - без каких-либо параметров состояния объекта - по умолчанию он сбрасывает все объекты.

Для получения дополнительной информации см. здесь

...