【问题标题】:Getting GC settings for running JVM [duplicate]获取运行 JVM 的 GC 设置 [重复]
【发布时间】:2013-09-18 19:37:18
【问题描述】:

有没有办法为正在运行的 JVM 获取 GC 设置?

我正在尝试查看运行 SerialGC、ParallelGC、ParallelOldGC、ConcurrentMarkSweepGC 等的 GC 算法。

【问题讨论】:

    标签: java garbage-collection


    【解决方案1】:

    JVM 有一个很好的 MBean:

    for(GarbageCollectorMXBean gc : ManagementFactory.getGarbageCollectorMXBeans()) {
       System.out.println(gc.getObjectName());
    }
    

    您应该会看到 MBean 名称,例如“PS Scavenge”或“PS Mark Sweep”。使用以下参考将名称与算法匹配:

    复制(年轻)- 复制收藏家

    ParNew (Young) - 并行年轻代收集器

    PS Scavenge (Young) - 并行对象清道夫

    MarkSweepCompact(旧)- 标记和清扫压实机

    ConcurrentMarkSweep(旧)- 并发标记和扫描压缩器

    PS MarkSweep(旧)- 并行标记和扫描收集器

    同样的信息也可以通过任何查看 MBean 的工具来收集:JConsole、JVisualVM、Jprofiler 等。

    【讨论】:

    • 问题是我无权访问源代码,无法重新编译。
    • 您还可以使用 JConsole、JVisualVM 或 JProfiler 等外部工具查看相同的 MBean 信息
    • 我查看了 java.lang.GarbageCollector 包下的 MBeans 选项卡,但我没有看到任何告诉我什么是 GC 算法?
    • 注意该选项卡下的 MBean 名称。例如,对于我的平台,它们是“PS Scavenge”和“PS ​​MarkSweep”。通过名称到算法参考查看更新的答案
    【解决方案2】:

    您可以使用 jconsole 并在其 GUI 中访问 JVM 的一些 JMX bean。在那里,您可以看到 JVM 内存的 Tenured 或 Young 部分的 GC 详细信息。它就在你的 jdk/bin 文件夹中(HotSpot)

    这里有一些有用的资源:

    Using JConsole

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      相关资源
      最近更新 更多