gpt4 book ai didi

java - 为什么 jhat 的 -baseline 选项不起作用?

转载 作者:搜寻专家 更新时间:2023-11-01 01:24:22 26 4
gpt4 key购买 nike

为什么每个对象都被标记为新的,而不仅仅是第二个快照中但不在我的基线快照中的对象?在网上查看时,我看到一些建议我需要使用 hprof 而不是 jmap 来制作我的内存转储,但 hprof 似乎以完全相同的格式生成转储。

这是 JDK 1.6.0_14;我在 Windows 和 UNIX 上都试过了。

最佳答案

jhat -baseline 确实不适用于 jmap 生成的转储。我不确定,但我相信这是因为 hprof 从一开始就附加到 JVM 并保持自己的对象跟踪,允许它在多个转储中生成一致的 ID。不要引用我的话。无论哪种方式,就您而言,重要的一点是 jmap 转储不起作用。

然而,一切并没有丢失。去拿Eclipse Memory Analyzer . (如果您不使用 Eclipse,请不要担心,您可以将其作为独立的可执行文件获取。)它比 jhat 更快,使用的内存比 jhat 少并且它可以做您想做的事:

  1. 打开转储 2(使用文件|打开堆转储)。不要费心让它为您创建报告。
  2. 打开转储 1(同样的方式)。同样,没有报告。
  3. 在 dump2 的选项卡中,单击“直方图”
  4. 在直方图子选项卡的工具栏右侧是“与另一个堆转储比较”。点击它。
  5. 从对话框中选择 dump1 作为要用作基线的转储。
  6. Presto,dump2 和基准 dump1 之间存在差异。

所有这一切都适用于 jmap 转储。

关于java - 为什么 jhat 的 -baseline 选项不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1279346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com