问题标签 [thread-dump]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
8115 浏览

java - 如何创建 Java Web Start 应用程序的线程转储

是否可以获得 Java Web Start 应用程序的线程转储?如果是这样,怎么办?

如果有一个简单的解决方案会很好,这将使非开发人员(客户)能够创建线程转储。或者,是否可以以编程方式创建线程转储?

在 Java Web Start 控制台中,我可以通过按“t”来获取线程列表,但不包括堆栈跟踪。

如果答案需要某些 java 版本,请这样说。

0 投票
4 回答
10787 浏览

java - 以编程方式转储线程 /JDI(Java 调试器接口)

我喜欢以编程方式生成线程转储。我了解到基本上有两种方法可以做到这一点:

  1. 使用“Java 虚拟机工具接口”JVM-TI
  2. 使用更高抽象的“Java 调试器接口”JDI

对于 JVM-TI,我能够找到一些有用的信息,但我必须编写一个 JNI-DLL,至少目前我想避免这种情况。通过 JDI,我可以使用 Java,而且似乎可以在应用程序中使用它。但我无法找到某种教程或 HOWTO。我能找到的唯一文档是 Java-Docs http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdi/这不是很有帮助,因为它没有向我展示如何使用这些类。

那么,有人知道我可以阅读的好教程/书吗?

感谢您的帮助!

0 投票
20 回答
549994 浏览

java - 如何在 Windows 上获取不在控制台中运行的 Java 进程的线程和堆转储

我有一个从控制台运行的 Java 应用程序,该控制台又执行另一个 Java 进程。我想获得该子进程的线程/堆转储。

在 Unix 上,我可以做一个kill -3 <pid>但在 Windows AFAIK 上,获得线程转储的唯一方法是控制台中的 Ctrl-Break。但这只会给我父进程的转储,而不是子进程。

还有另一种方法来获取堆转储吗?

0 投票
3 回答
4179 浏览

java - JBoss 上未生成线程转储

我曾经通过运行 kill -quit 来生成线程转储,我会将它们放在我的服务器日志所在的日志文件中。当文件变得太大时,我使用 rm 将其删除并创建了一个同名的新文件。现在,当我使用 kill -quit 进行线程转储时,日志文件中没有任何内容被复制 - 它是空的。

任何人都可以帮忙吗?

0 投票
1 回答
2805 浏览

multithreading - 解释 BEA weblogic 线程转储 - 有用的文档和/或工具?

我是 Weblogic 故障排除的新手。

我们的生产环境有问题。我无法直接访问环境(我们的托管人员会这样做,但要等几个小时才能问他们问题)。

从问题在生产中很明显的那一刻起,我就有了一个线程转储。我可以查看转储并推断出一些东西,但鉴于它非常结构化并且人们一直在做一些事情,我假设那里有工具可以帮助解释它们。在那里?

如果做不到这一点,是否有一些有用的文档或网站可以帮助我学习解释它们?

0 投票
5 回答
121126 浏览

java - Websphere中javacore、线程转储和堆转储的区别

有人能告诉我javacore、线程转储和堆转储之间的确切区别吗?在什么情况下使用这些中的每一个?

0 投票
2 回答
4525 浏览

.net - 如何使用 MONO 进行线程转储?

如何在使用 MONO 运行的挂起应用程序中显示线程(堆栈跟踪)?

我知道我可以使用托管堆栈资源管理器 (MSE) 在 .NET 中完成此操作。因为应用程序只与 MONO 一起挂起,所以我需要用 MONO 来做。

或者有什么其他的想法我可以找到悬挂的地方吗?

0 投票
2 回答
1509 浏览

java - Tomcat Web 应用程序线程转储

我有一个在 Tomcat 中运行的生产 Web 应用程序(Struts、iBatis、Hibernate),它在运行 6 到 7 天后会在服务请求时挂起,但在执行线程转储后会再次运行良好。

我很难弄清楚为什么会这样。

我只是想知道是否有人遇到过类似的事情。

0 投票
4 回答
7738 浏览

java - java线程转储的评估

我得到了我的一个进程的线程转储。它有一堆这样的线程。我猜他们保留了一堆记忆,所以我得到了OOM。

我试图找出它是如何达到这种情况的。CustomThreadedExtractorWrapper 是一个包装类,它触发一个线程来完成一些工作(ExtractionThread,它使用 ZipExtractorCommonsCompress 从压缩流中提取 zip 内容)。如果任务耗时过长,ExtractionThread.interrupt()则调用取消操作。

我可以在我的日志中看到取消发生了 25 次。我在我的转储中看到了其中的 21 个线程。我的问题:

  1. 这些线程的状态是什么?活着还跑?以某种方式被阻止?
  2. 他们显然没有死于 .interrupt() 吗?有没有确定的方法可以真正杀死一个线程?
  3. 堆栈跟踪中“锁定”的真正含义是什么?

Inflater.java 中的第 223 行是:

0 投票
2 回答
2364 浏览

java - 主线程没有调用堆栈的Java线程转储?(jsvc)

我们有一个作为守护进程运行的 java 进程(在 jsvc 下)。每隔几天它就会停止做任何工作;到日志文件的输出停止(它非常冗长,每隔 5 分钟)并且它不消耗 CPU 或 IO。

日志文件或 syserr 或 sysout 中都没有记录异常。最后一条日志语句是在完成数据库提交之前,但是数据库服务器(MySQL)上没有打开的连接并查看代码,之后应该总是有额外的日志输出,即使它遇到了一个异常会冒泡。

我发现最奇怪的是,在线程转储(包括在下面)中,我们的代码中根本没有线程,主线程似乎没有任何上下文:

如前所述,这是一个使用 jsvc 运行的守护进程,但我不知道这是否与它有关(我可以重组代码以也允许直接运行它,以进行测试)。

关于这里可能发生的事情有什么建议吗?

谢谢... dwh

完整的线程转储: