如何知道使用jmx的Java堆中每一代的大小? [英] how can I know size of each generation in java heap with jmx
本文介绍了如何知道使用jmx的Java堆中每一代的大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
jmap可以知道每一代的大小,但我希望实时监视我的Java进程。
使用jmx,MemoryMXBean.getHeapMemoryUsage().getUsed()
可以获得总的堆大小。但我找不到任何方法来获取:
- 新(年轻)和终身(老)世代人数;
- 伊甸园的大小和新一代的每一个幸存者。
推荐答案
您可以使用ManagementFactory.getMemoryPoolMXBeans()
。它显示了所有的内存区域。根据您使用的GC,名称会有所不同。pool.getCollectionUsage().getInit()
提供池的初始大小。pool.getName()
如果您使用G1 GC,则pool.getName()
是例如‘G1 Eden Space’或‘G1 Old Gen’或‘G1 Survivor Space’。
pool.getUsage().getUsed()
还返回该区域的已用内存量。
这篇关于如何知道使用jmx的Java堆中每一代的大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文