我试过这个从 Tomcat 6 获取 JVM 上的堆转储 https://stackoverflow.com/questions/18578710/get-a-heapdump-on-jvm-from-tomcat-6但它对我不起作用,还有其他方法从 tomcat 服务器获取堆转储吗?提前致谢!
获取堆转储的最简单方法是使用jmap http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html。在有java进程的机器上执行jmap命令。使用示例:
jmap -dump:file=/mnt/heapdump_2013-04-01.data 29842
use jps http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html知道java Pid。
您也可以通过进行堆转储视觉虚拟机 http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html。您可以通过以下方式连接到远程机器jmx https://visualvm.java.net/jmx_connections.html or jstatd http://www.first8.nl/profiling-remote-jvm-using-visualvm/。您可以制作堆转储并存储在远程计算机上。
分析堆转储可以为您提供以下建议:MAT http://www.eclipse.org/mat/。非常强大的工具,可以让您快速理解问题。你可以找到here https://blog.codecentric.de/en/2011/08/create-and-understand-java-heapdumps-act-4/很好的 MAT 介绍。
如果你不想长时间停止应用程序,你可以进行二进制转储(您可以使用 gcore 或 gdb https://superuser.com/questions/401182/how-can-i-create-a-dump-file-of-a-running-process-in-linux)。你可以使用jmap分析gdb dump https://stackoverflow.com/questions/951095/tool-for-analyzing-java-core-dump。您可以阅读更多信息阿特拉斯博客 https://blogs.atlassian.com/2013/03/so-you-want-your-jvms-heap/。提防some https://stackoverflow.com/questions/9981080/core-dump-taken-with-gcore-jmap-conversion-to-hprof-file-format-fails-with-erro issues https://stackoverflow.com/questions/13934547/how-to-reliably-take-jvm-core-dump-if-application-is-in-gc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)