如何用jmx知道java堆中每一代的大小

问题描述 投票:0回答:1

jmap可以知道每一代的大小,但我想实时监控我的java进程。

使用jmx,MemoryMXBean.getHeapMemoryUsage().getUsed()可以获得总堆大小。但我找不到任何方法:

  1. 新(年轻)和终身(旧)世代的规模;
  2. 伊甸园的大小和新一代的每个幸存者。
garbage-collection jvm jmx heap-dump
1个回答
4
投票

你可以使用ManagementFactory.getMemoryPoolMXBeans()。它显示了所有内存区域。根据您使用的GC,名称不同。 pool.getCollectionUsage().getInit()给出了游泳池的初始大小。如果你使用G1 GC,pool.getName()就是'G1 Eden Space'或'G1 Old Gen'或'G1 Survivor Space'。

pool.getUsage().getUsed()还返回该区域的已用内存量。

© www.soinside.com 2019 - 2024. All rights reserved.