【问题标题】:jvisualvm -how to see live objects with memory consumptionjvisualvm - 如何查看具有内存消耗的活动对象
【发布时间】:2012-05-25 10:37:29
【问题描述】:

我正在尝试使用 JVisualVM 查看我的应用程序活动对象及其相应的内存计数(可能在包级别)

当我使用 jstad 连接时如何实现同样的效果

谢谢

【问题讨论】:

    标签: java profiling jvisualvm


    【解决方案1】:

    VisualVM 绝对支持通过堆转储查看和检查实时对象,以及实时采样分配。

    对于堆转储,右键单击进程,选择 Heap Dump。

    这将打开堆转储视图。在 Summary 页面上,您可以通过保留大小计算 n 个最大的对象,然后点击进入各种视图。

    它提供与上面建议的使用 jmap 和 mat 基本相同的功能,但工作流程和可用性要好得多。

    【讨论】:

      【解决方案2】:

      我很确定你不能对正在运行的进程使用 VisualVM 来做到这一点。您需要做的是使用 jmap 进行堆转储(例如 jmap -dump:format=b,file=heapdump.bin),然后使用像 mat 这样的工具来分析该转储。

      请注意,堆转储会在相当长的时间内阻塞您的进程,尤其是在您有大堆的情况下。

      您还可以在更一般的级别上获取信息,即针对您的进程运行 jmap -histo:live 以查看每种类型的对象数量及其足迹。

      【讨论】:

      • jmap 很棒,感谢您的提示。我只是用它来获取大小为 17GB 的堆的活动对象列表,这大约需要 3 秒。出于我的目的,为每个类获取多个实例足以识别内存膨胀。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      相关资源
      最近更新 更多