【问题标题】:How do I get a peak memory usage snapshot from JVisualVM?如何从 JVisualVM 获取峰值内存使用快照?
【发布时间】:2010-03-12 13:12:00
【问题描述】:

我需要在应用程序的内存使用高峰期进行内存快照 - 有没有简单的方法来实现这一点?

谢谢

【问题讨论】:

    标签: java profiling jvisualvm


    【解决方案1】:

    嗯?除非您可以量化地说 何时 出现峰值,否则您希望如何实现?如果每个时间点都可能是您要保存的一个状态,并且无法提前知道,则必须为所有点保存完整的快照。听起来很难。

    【讨论】:

    • if (current peak > peak so far) overwrite snapshot //不难吧?
    • @MalcolmTucker:因此,如果您每次都进行非常昂贵的操作(我假设存储 VM 的完整状态是这样),并且例如 增长 最大会触发多次。当然也可以有局部最小值。
    【解决方案2】:

    JVisualVM 的替代方法是获取您的 native_stderr.log 并在 IBM's Pattern Modeling and Analysis Tool for Java Garbage 中打开它。您将能够快速查看应用程序使用堆空间的最高点。

    【讨论】:

      【解决方案3】:

      使用 VisualVM/JConsole 监控应用程序。当你看到峰值时做一个堆转储。

      另一种方法是(如果您不想监视)将 Xmx 减少到您肯定会抛出内存不足异常的东西。并激活标志 -XX:+HeapDumpOnOutOfMemoryError

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-30
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2021-04-09
        相关资源
        最近更新 更多