“线程转储”是什么意思?

30

我想了解什么是Java线程转储。

请问有人可以帮我理解一下什么是线程转储以及它如何与正在运行的Java程序相关吗?


3
它字面上会输出每个线程的名称和堆栈(程序运行的位置)。它可用于帮助了解程序的运行情况。VisualVM是展示进程中所有线程的最佳方式之一。 - Peter Lawrey
6
请分享一些知识。这些问题通常可以通过在搜索引擎中输入关键词来得到答案。在这种情况下,请搜索“java+thread+dump”。 - Andrew Thompson
14
刚刚在谷歌搜索了“线程转储含义”,第一个结果是这个stackoverflow的问题。这就是为什么stackoverflow成为各种开发人员的伟大平台,基础问题不应该受到抑制。 - Marcelo Oliveira
4个回答

33

Java线程转储是一种在特定时间点找出JVM中每个线程正在执行的方法。当Java应用程序在负载下运行时似乎有时会挂起,分析转储将显示线程停留在哪里,这是特别有用的。

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

了解如何从JVM中获取线程转储,请在此处查看

了解如何创建线程转储,请在此处查看


在特定的时间点,我们是否可以定义转储的时间段? - bogdan.rusu

16

2

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

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


1
线程转储是在程序失败时呈现调用堆栈状态的输出。这应该让您找出程序中出了什么问题,因为它准确地显示了程序正在做什么(以及为什么)。
您是否有需要查看的线程转储?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接