首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可用于调试Java应用程序中的生产问题的工具

可用于调试Java应用程序中的生产问题的工具
EN

Stack Overflow用户
提问于 2010-05-28 18:02:02
回答 7查看 8.1K关注 0票数 13

只是想知道在Java应用程序上调试生产问题的各种工具和技术是什么。喜欢,

  • 采用线程转储的方法和工具是什么?
  • 采用堆转储的方法和工具是什么?
  • 分析上述转储的工具是什么?

(假设所有这些都在Linux/Unix环境中)

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-05-28 19:28:53

采用线程转储的方法和工具是什么?

对于线程转储,可以使用JConsole、VisualVM或更简单地向目标进程发送退出信号。

代码语言:javascript
复制
kill -QUIT <pid> 

代码语言:javascript
复制
kill -3 <pid>

从Java 5开始,还有独立于平台的jstack,它有一个很好的-m选项,可以同时打印Java和本机框架(混合模式)。

采用堆转储的方法和工具是什么?

使用Sun VM、jmap、Sun JConsole、Sun VisualVM、SAP JVMMon。对于IBM,请检查此页。实际上,Eclipse有一个很好的得到一个堆垃圾场部分,总结了所有选项。

分析上述转储的工具是什么?

对于线程转储,我使用TDA -线程转储分析器 (对于Sun )和IBM线程和监视器转储分析器 (对于IBM )。武士也很不错(它像tail -f一样工作,自动从std/stderr获取线程转储,还可以读取"-verbose:gc“日志),并且已经在来自苹果、BEA、HP、Sun和IBM的VM上进行了测试(也可以读取IBM的javacore)。

对于堆转储,我根据需要使用VisualVM (对于Sun )或IBM堆转储分析器 (仅用于IBM )或über可怕的月食垫。后者可以使用HPROF二进制堆转储(由Sun,HP,SAP等.(JVM)、IBM系统转储(经过预处理后)和来自各种IBM平台的IBM可移植堆转储(PHD)。

票数 7
EN

Stack Overflow用户

发布于 2010-05-28 18:08:38

假设JDK 6,查看下面的文章以获得正在运行的程序的线程转储:

http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/

您可以使用JHat进行堆分析:

http://java.sun.com/javase/6/docs/technotes/tools/share/jhat.html

如果您想做内存转储,请查看jmap:

http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html

或者,如果您需要进行更深入的分析,请查看像Yourkit这样的分析器:

http://www.yourkit.com/

票数 1
EN

Stack Overflow用户

发布于 2010-05-28 18:11:43

还有两件事可以让你感兴趣:

  • JConsole可以转储堆
  • Ctrl-中断来执行线程转储
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2931398

复制
相关文章

相似问题

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