我正在尝试使用以下2条命令进行堆转储
jcmd产生的文件大小约为300M,jmap产生的文件大小约为1.4G。为什么这些大小不同,jmap中是否还有其他信息?我在jcmd中缺少一些参数吗?
JDK是1.8.0_162
Xms和Xmx是4G
答案 0 :(得分:2)
JMAP进行了所有对象转储,而JCMD进行了唯一的活动对象转储。
使用JCMD命令: 使用此命令时,您必须传递-all选项。否则,它将请求完整的GC,并且仅生成活动对象转储。
使用JMAP命令: 使用此命令时,您无需指定任何内容,因为默认情况下会产生所有对象的堆转储。如果仅需要活动对象,则可以在JMAP中传递“活动”选项。
JCMD-没有任何对象状态选项-默认情况下,它仅转储活动对象。 JMAP-没有任何对象状态选项-默认情况下,它转储所有对象。
有关更多信息,请参见here