我怎么知道用jmx在java堆中每一代的大小

时间:2019-04-03 13:54:17

标签: garbage-collection jvm jmx heap-dump

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

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

  1. 新生代和年轻人代的大小;
  2. 伊甸园的大小和新生代中的每个幸存者。

1 个答案:

答案 0 :(得分:4)

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

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