我正在尝试使用以下2条命令进行堆转储
jcmd生成的文件大小为300 m,jmap生成的文件大小为1.4g。为什么这些大小不同,我们在jmap中有其他信息吗?我是不是遗漏了jcmd中的一些论点?
JDK是1.8.0_162
Xms和Xmx是4G
发布于 2019-07-30 09:01:09
默认情况下(当没有提供选项时),
JMAP采用了一个全对象转储,而JCMD只使用活动对象转储。
使用JMAP命令:在使用此命令时,您不需要指定任何东西,因为默认情况下,生成所有对象的堆转储。如果您只需要活动对象,可以在JMAP中传递'-dump: live‘选项。
使用JCMD命令:在使用此命令时,必须传递-all选项。否则,它将请求一个完整的GC,并且只生成活动对象转储。
JCMD --没有任何对象状态选项--默认情况下它只转储活动对象。
JMAP --没有任何对象状态选项--默认情况下它会转储所有对象。
有关更多信息,请参阅这里
https://stackoverflow.com/questions/52053455
复制相似问题