首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从运行tomcat 7中获取堆转储

如何从运行tomcat 7中获取堆转储
EN

Stack Overflow用户
提问于 2013-11-27 14:54:42
回答 3查看 50.3K关注 0票数 11

我已经尝试过这个Get a heapdump on JVM from Tomcat 6,但它对我不起作用,有没有其他方法可以从tomcat服务器获取堆转储?提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2013-11-27 15:02:38

获取堆转储的最简单方法是使用jmap。在运行java进程的机器上,执行jmap命令。用法示例:

代码语言:javascript
复制
jmap -dump:file=/mnt/heapdump_2013-04-01.data 29842

使用jps了解java Pid。

您还可以通过jvisualvm进行堆转储。您可以通过jmxjstatd连接到远程计算机。您可以在远程机器上进行堆转储和存储。

分析堆转储可以给你一些建议:MAT。非常强大的工具,可以让你快速了解问题。你可以在垫子上找到很好的here

如果您不想长时间停止应用程序,可以进行二进制转储(You can use gcore or gdb)。你可以使用use jmap to analyze gdb dump。您可以在atlassian blog上阅读更多信息。当心some issues

票数 21
EN

Stack Overflow用户

发布于 2013-11-27 15:11:15

除了jvisualvm的“转储堆”-Button之外,另一种方法是通过JMX接口。这种方式甚至允许您指定存储转储的位置。

使用jconsole或带有JMX-plugin的jvisualvm连接到tomcat的JMX-server。然后转到com.sun.management -> HotSpotDiagnotic -> Operations。在dumpHeap旁边填写两个参数。来自oracle的文档(请参阅here):

参数:

outputFile -系统相关的文件名

live -如果为true,则仅转储活动对象,即可从其他人访问的对象

然后按dumpHeap键,观察VM在写入转储时冻结一段时间。

票数 5
EN

Stack Overflow用户

发布于 2015-07-06 13:24:14

我推荐visual VM http://visualvm.java.net/它是一个可以连接到tomcat,创建和读取堆转储,创建线程转储,中央处理器和内存采样器的一体化工具。

如果您使用新的JDK1.7,VisualVM已经打包在您的jdk文件夹中。

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

https://stackoverflow.com/questions/20235802

复制
相关文章

相似问题

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