Как я могу узнать размер каждого поколения в куче Java с JMX - PullRequest
0 голосов
/ 03 апреля 2019

jmap может знать размер каждого поколения, но я хочу отслеживать мой процесс Java в режиме реального времени.

С jmx , MemoryMXBean.getHeapMemoryUsage().getUsed() может получить общий размер кучи. Но я не могу найти способ получить:

  1. размер нового (молодого) и штатного (старого) поколения;
  2. Размер Эдема и каждого Выжившего в Новых поколениях.

1 Ответ

4 голосов
/ 03 апреля 2019

Вы можете использовать ManagementFactory.getMemoryPoolMXBeans().Он показывает все области памяти.В зависимости от используемого GC имена могут отличаться.pool.getCollectionUsage().getInit() дает начальный размер пула.pool.getName() - это, например, «G1 Eden Space» или «G1 Old Gen» или «G1 Survivor Space», если вы используете G1 GC.

pool.getUsage().getUsed() возвращает также количество использованной памяти для этого региона.

...