【问题标题】:Get visual graph of heap memory usage in Java over a span of time获取一段时间内 Java 中堆内存使用情况的可视化图表
【发布时间】:2010-11-30 17:34:39
【问题描述】:

我目前正在使用 Visual VM 来监控我的 Java 应用程序的堆内存使用情况。但是,我想以某种方式查看一段时间内的堆内存使用情况,例如一天,而不仅仅是获取快照。我希望能够打开 Visual VM 或工具并让它记录内存使用情况和然后一天后,我可以回去查看它的图表。有没有办法使用 Visual VM 做到这一点?如果是,如何?如果没有,我可以使用什么工具来做到这一点?

【问题讨论】:

    标签: java memory-management


    【解决方案1】:

    使用以下 Java 选项运行您的 Java 程序:

    -Xloggc:log.out -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
    

    并下载HPjmeter 以可视化log.out

    另请参阅 SUN 的 GC portal 网页,了解更多运行选项。由于数据已写入文件,因此收集数天或数周的数据不会有任何问题。当然,如果您希望将包含大量信息的数据可视化,则需要运行具有更多内存的 HPjmeter。

    您的另一个选择是使用JConsole

    【讨论】:

    • 在我看来它们是 gc 日志。他们不是只在每次出现内存峰值时才记录吗?
    • @Jeune - GC 日志显示 GC 后的堆利用率,这可能是 Java 堆使用情况的最准确度量。它与内存峰值无关。试试看……
    • GC 是否被调用并最终被记录,这通常让我能够在某个时间跨度内绘制准确的堆内存使用情况?
    • @Jeune - 除非您预先静态分配应用程序中的所有对象并且它们永远不会超出范围并且您的程序没有短期对象
    • @Jeune 您也可以按照我的建议尝试 JConsole。
    【解决方案2】:

    试试 JConsole 中的内存选项卡。 JConsole 也包含在 Oracle JDK 中,如 JVisualVM,因此您应该已经拥有它。它有一个“全部”的时间范围,应该适用于你想做的事情。它看起来像这样:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 2011-11-30
      • 2011-03-27
      • 2023-03-27
      • 2012-02-20
      • 2011-03-08
      相关资源
      最近更新 更多