只是想知道在Java应用程序上调试生产问题的各种工具和技术是什么。喜欢,
(假设所有这些都在Linux/Unix环境中)
发布于 2010-05-28 19:28:53
采用线程转储的方法和工具是什么?
对于线程转储,可以使用JConsole、VisualVM或更简单地向目标进程发送退出信号。
kill -QUIT <pid> 或
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)。
发布于 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/
发布于 2010-05-28 18:11:43
还有两件事可以让你感兴趣:
https://stackoverflow.com/questions/2931398
复制相似问题