【问题标题】:how can I know size of each generation in java heap with jmx如何使用 jmx 知道 Java 堆中每一代的大小
【发布时间】:2019-08-25 02:01:21
【问题描述】:

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

使用jmxMemoryMXBean.getHeapMemoryUsage().getUsed()可以得到总堆大小。但我找不到任何方法得到:

  1. 新(年轻)代和终身(老)代的规模;
  2. 伊甸园的大小和新一代的每个幸存者。

【问题讨论】:

    标签: garbage-collection jvm jmx heap-dump


    【解决方案1】:

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

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

    【讨论】:

    • pool.getCollectionUsage().getUsed() 总是得到0pool.getUsage().getUsed() 有效。
    • 猜猜我在两者之间搞砸了:)。将编辑它的答案:)。
    猜你喜欢
    • 2015-09-07
    • 2019-03-19
    • 2019-09-17
    • 1970-01-01
    • 2023-04-11
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    相关资源
    最近更新 更多