执行jmap时JVM是否停止了?


问题内容

jmap进行内存转储时,我的Java应用程序是否继续运行?


问题答案:

您的应用程序已停止。获得准确的堆转储的唯一实用方法是在创建转储时停止所有应用程序活动。

这是“简短”暂停还是“长时间”暂停取决于要转储多少。如果使用“ -dump”,则将转储整个堆,包括不可达的对象。如果使用“
-dump:live”,则只会转储可访问的对象……但这(至少)需要标记堆以找出可访问的对象。

但是,如果要转储千兆字节大小的堆,则期望暂停时间以分钟而不是秒为单位。


然后是资源使用问题。