我如何知道 java 堆中每一代的大小与 jmx
how can I know size of each generation in java heap with jmx
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()
returns 以及该区域的已用内存量。
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()
returns 以及该区域的已用内存量。