首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >除了jmap之外,还有命令行方法来获取jvm堆转储吗?

除了jmap之外,还有命令行方法来获取jvm堆转储吗?
EN

Stack Overflow用户
提问于 2016-07-06 16:40:00
回答 0查看 1.9K关注 0票数 0

我们在linux中使用oracle jvm 1.8 64位。

我们知道jmap可以获得jvm堆转储:

代码语言:javascript
运行
复制
jmap -F -dump:format=b,file=***filepath*** ***pid***

但速度很慢。

我们知道,使用JVisualVM和JConsole连接到JMX也可以获得堆转储,而且速度非常快。但它们是使用GUI的。

但是,在我们的产品环境中,没有GUI。任何安装了GUI的机器都无法访问该环境。

因此,我们的问题是- JVisualVM和JConsole能否支持命令行来执行堆转储?或者,除了jmap之外,还有没有命令行方法来获取jvm堆转储?

我们今天试过了-

1、使用jvisualvm(远程jmx),我们可以成功获得堆转储

2 .使用不带-F选项的jmap时,转储失败:

root@panda01 ~# jmap -dump:format=b,文件=/tmp/heapdump.31941.hprof 31941

31941:无法打开套接字文件:目标进程未响应或未加载HotSpot VM

当目标进程没有响应时,可以使用-F选项

3 .使用带有-F选项的jmap,转储成功,但速度很慢:

root@panda01 ~# jmap -F -dump:format=b,文件=/tmp/heapdump.31941.hprof 31941

正在附加到进程ID 31941,请稍候...

已成功附加调试器。

检测到服务器编译器。

JVM版本为25.92-b14

正在将堆转储到/tmp/heapdump.31941.hprof...

已创建堆转储文件

我们注意到了结果(2个.hprof文件)。使用jvisualvm的文件转储(称为第一转储)小于使用jmap -F的文件转储(称为第二转储)。使用jvisualvm查看,第一个转储中的实例数量和大小远远小于第二个转储中的实例数量和大小。

EN

回答

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

https://stackoverflow.com/questions/38219660

复制
相关文章

相似问题

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