30

我想知道java线程转储是什么。有人可以帮我理解什么是线程转储以及它与正在运行的 java 程序的关系吗?

4

4 回答 4

33

Java 线程转储是一种找出 JVM 中的每个线程在特定时间点正在做什么的方法。如果您的 Java 应用程序在负载下运行时有时似乎挂起,这将特别有用,因为对转储的分析将显示线程卡在的位置。

Unix/Linux您可以通过运行来生成线程转储kill -QUIT <pid>,并Windows通过点击来生成线程转储Ctl + Break

要了解如何从 JVM 获取线程转储,请参见此处

要了解如何创建线程转储,请参见此处

于 2012-09-05T08:10:05.320 回答
16

来自http://www.javasanity.org/understandingthreaddumps

线程转储是某一时刻正在执行的确切内容的快照

有很多资源可以帮助您理解/分析线程转储(例如http://www.javacodegeeks.com/2012/03/jvm-how-to-analyze-thread-dump.html)。

您可能还会发现以下问题很有用:线程转储分析工具/方法

于 2012-09-05T08:10:56.173 回答
2

“线程转储是当前在 Java 虚拟机 (JVM) 中活动的所有 Java 线程的列表。” 链接

通常,此列表中的线程由其当前堆栈跟踪和线程状态(运行、挂起、锁定等)表示。

于 2012-09-05T08:11:09.980 回答
1

线程转储是程序失败时调用堆栈状态的输出。这应该让您知道程序中出现了错误,因为它准确地显示了程序在做什么(以及为什么)。

你有需要查看的线程转储吗?

于 2012-09-05T08:10:07.453 回答