首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在负载下收集Java堆转储

在负载下收集Java堆转储
EN

Stack Overflow用户
提问于 2010-08-19 19:55:15
回答 3查看 4.3K关注 0票数 5

我正在对运行在Java 6上的Tomcat 6运行load。我想在Tomcat服务器处于负载状态时收集Java堆的堆转储。我通常使用jmap -dump来收集我的堆转储。

但是,当我尝试在Tomcat处理高负载时执行此操作时,我发现heapdump收集失败。

jmap是从负载下的进程收集堆转储的最佳工具吗?导致jmap无法收集堆转储的可能原因是什么?

如果jmap不是最好的工具--哪个更好?

我完全可以接受jmap (或其他一些工具)在获取堆转储时停止Java进程中的世界。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-29 02:46:35

我发现使用JMX端口运行Tomcat允许我使用visualvm获取远程堆转储。当jmap失败时,这对我来说是成功的。

票数 2
EN

Stack Overflow用户

发布于 2010-08-19 20:06:17

jmap是从负载下的进程收集堆转储的最佳工具吗?

我认为:不,不是。From this link

说明-此实用程序不受支持,在未来版本的JDK中可能会也可能不会提供。

票数 2
EN

Stack Overflow用户

发布于 2010-08-28 23:04:46

我还发现jmap非常喜怒无常。如果你有问题:

  • 重试。它通常会在几次尝试之后设法获得堆转储,如果第一次尝试失败,则使用-F选项
  • -F
  • -XX:+HeapDumpOnOutOfMemoryError作为标准配置,以便在抛出OOM错误时主动获取堆转储
  • 以交互方式运行Tomcat并添加堆转储on ctrl-break选项。这也为你提供了一个线程转储,如果你的堆特别大,并且你有一个可重复的条件,
  • ,你可能会需要它,暂时降低你的堆大小。这使得生成的文件更易于处理,花费的时间更少,并且更有可能成功
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3521486

复制
相关文章

相似问题

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