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

标签 java jakarta-ee heap-dump

<分区>

只是想知道有哪些不同的工具和技术可以用来调试 Java 应用程序的生产问题。 喜欢,

  • 获取线程转储的方法和工具有哪些?
  • 获取堆转储的方法和工具有哪些?
  • 分析上述转储的工具是什么?

(假设都是Linux/Unix环境)

最佳答案

What are the ways and tools to take thread dumps?

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

kill -QUIT <pid> 

kill -3 <pid>

从 Java 5 开始,还有 jstack它是平台独立的,并且有一个很好的 -m 选项来打印 Java 和 native 帧(混合模式)。

What are the ways and tools to take heap dumps?

使用 Sun 虚拟机,jmap,Sun JConsole , 孙 VisualVM ,SAP JVMMon。对于 IBM VM,检查 this page .实际上,Eclipse MAT wiki 有一个很好的 Getting a Heap Dump总结所有选项的部分。

What are the tools to analyse the above dumps?

对于线程转储,我使用 TDA - Thread Dump Analyzer (对于 Sun JDK)和 IBM Thread and Monitor Dump Analyzer (对于 IBM JDK)。 Samurai也非常好(它像 tail -f 一样工作并自动从您的 std/stderr 中获取线程转储,它还可以读取“-verbose:gc”日志)并且已经针对 VM 进行了测试Apple、BEA、HP、Sun 和 IBM(也可以看 IBM 的 javacore)。

对于堆转储,我使用 VisualVM (对于 Sun JDK)或 IBM Heap Dump Analyzer (仅适用于 IBM JDK)或 über awesome Eclipse MAT取决于我的需要。后者 能够处理 HPROF 二进制堆转储(由 Sun、HP、SAP 等... JVM 生成)、IBM 系统转储(在对其进行预处理之后)以及来自各种不同平台的 IBM 可移植堆转储 (PHD) IBM 平台)。

关于java - 可用于调试 Java 应用程序中的生产问题的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2931398/

相关文章:

java - 我怎样才能动态生成xsd

java - Wildfly 10 无法连接数据源 : invalid connection

java - ActiveMQ 生产者生成堆转储

java - 将 JVM 堆转储写入标准输出

garbage-collection - java 堆中的 "live"对象是什么? (使用 jmap 进行堆转储)

java - 在文档中显示方法体的一部分

java - 在 Rest Web 服务中使用 https

java重新排序和内存模型

java - 我如何处理 Java 中的 StackOverflowError?

java - 将GAE上托管的应用程序导入到eclipse中的方法是什么?