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