jmap 可以知道每一代的大小,但是我想实时监视我的java进程。
使用 jmx ,MemoryMXBean.getHeapMemoryUsage().getUsed()
可以获得堆的总大小。但是我找不到任何获取方法:
答案 0 :(得分:4)
您可以使用ManagementFactory.getMemoryPoolMXBeans()
。它显示所有内存区域。根据所使用的GC,名称会有所不同。 pool.getCollectionUsage().getInit()
给出池的初始大小。如果使用G1 GC,pool.getName()
例如是“ G1 Eden Space”或“ G1 Old Gen”或“ G1 Survivor Space”。
pool.getUsage().getUsed()
还返回该区域的已用内存量。