首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么jmap和jcmd生成的堆转储大小有差异?

为什么jmap和jcmd生成的堆转储大小有差异?
EN

Stack Overflow用户
提问于 2018-08-28 08:33:13
回答 1查看 4.2K关注 0票数 9

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

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

jcmd生成的文件大小为300 m,jmap生成的文件大小为1.4g。为什么这些大小不同,我们在jmap中有其他信息吗?我是不是遗漏了jcmd中的一些论点?

JDK是1.8.0_162

Xms和Xmx是4G

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-30 09:01:09

默认情况下(当没有提供选项时),

JMAP采用了一个全对象转储,而JCMD只使用活动对象转储。

使用JMAP命令:在使用此命令时,您不需要指定任何东西,因为默认情况下,生成所有对象的堆转储。如果您只需要活动对象,可以在JMAP中传递'-dump: live‘选项。

使用JCMD命令:在使用此命令时,必须传递-all选项。否则,它将请求一个完整的GC,并且只生成活动对象转储。

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

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

有关更多信息,请参阅这里

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52053455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档