gpt4 book ai didi

java - 为什么 jmap 和 jcmd 生成的堆转储大小不同?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:30 27 4
gpt4 key购买 nike

我正在尝试使用以下 2 个命令进行堆转储

  1. jcmd $pid GC.heap_dump/tmp/filename.dump
  2. jmap -dump:format=b,file=/tmp/filename.dump $pid

jcmd 生成的文件大小约为 300M,而 jmap 生成的文件大小约为 1.4G。为什么这些尺寸不同,我们在 jmap 中有任何其他信息吗?我在 jcmd 中遗漏了一些参数吗?

JDK 是 1.8.0_162

Xms和Xmx是4G

最佳答案

默认(当没有提供[选项]时),

JMAP 采用所有对象 转储,而 JCMD 仅采用 Activity 对象 转储。

使用 JMAP 命令:使用此命令时,您无需指定任何内容,因为它默认生成所有对象的堆转储。如果您只需要 Activity 对象,您可以在 JMAP 中传递 '-dump:live' 选项。

使用 JCMD 命令:使用此命令时,您必须传递 -all 选项。否则,它将请求完整的 GC 并仅生成 Activity 对象转储。

JCMD - 没有任何对象状态选项 - 默认情况下它只转储 Activity 对象。

JMAP - 没有任何对象状态选项 - 默认情况下它会转储所有对象。

有关更多信息,请参阅 here

关于java - 为什么 jmap 和 jcmd 生成的堆转储大小不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52053455/

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