问题标签 [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.
java - 如何创建 Java Web Start 应用程序的线程转储
是否可以获得 Java Web Start 应用程序的线程转储?如果是这样,怎么办?
如果有一个简单的解决方案会很好,这将使非开发人员(客户)能够创建线程转储。或者,是否可以以编程方式创建线程转储?
在 Java Web Start 控制台中,我可以通过按“t”来获取线程列表,但不包括堆栈跟踪。
如果答案需要某些 java 版本,请这样说。
java - 以编程方式转储线程 /JDI(Java 调试器接口)
我喜欢以编程方式生成线程转储。我了解到基本上有两种方法可以做到这一点:
- 使用“Java 虚拟机工具接口”JVM-TI
- 使用更高抽象的“Java 调试器接口”JDI
对于 JVM-TI,我能够找到一些有用的信息,但我必须编写一个 JNI-DLL,至少目前我想避免这种情况。通过 JDI,我可以使用 Java,而且似乎可以在应用程序中使用它。但我无法找到某种教程或 HOWTO。我能找到的唯一文档是 Java-Docs http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdi/这不是很有帮助,因为它没有向我展示如何使用这些类。
那么,有人知道我可以阅读的好教程/书吗?
感谢您的帮助!
java - 如何在 Windows 上获取不在控制台中运行的 Java 进程的线程和堆转储
我有一个从控制台运行的 Java 应用程序,该控制台又执行另一个 Java 进程。我想获得该子进程的线程/堆转储。
在 Unix 上,我可以做一个kill -3 <pid>
但在 Windows AFAIK 上,获得线程转储的唯一方法是控制台中的 Ctrl-Break。但这只会给我父进程的转储,而不是子进程。
还有另一种方法来获取堆转储吗?
java - JBoss 上未生成线程转储
我曾经通过运行 kill -quit 来生成线程转储,我会将它们放在我的服务器日志所在的日志文件中。当文件变得太大时,我使用 rm 将其删除并创建了一个同名的新文件。现在,当我使用 kill -quit 进行线程转储时,日志文件中没有任何内容被复制 - 它是空的。
任何人都可以帮忙吗?
multithreading - 解释 BEA weblogic 线程转储 - 有用的文档和/或工具?
我是 Weblogic 故障排除的新手。
我们的生产环境有问题。我无法直接访问环境(我们的托管人员会这样做,但要等几个小时才能问他们问题)。
从问题在生产中很明显的那一刻起,我就有了一个线程转储。我可以查看转储并推断出一些东西,但鉴于它非常结构化并且人们一直在做一些事情,我假设那里有工具可以帮助解释它们。在那里?
如果做不到这一点,是否有一些有用的文档或网站可以帮助我学习解释它们?
java - Websphere中javacore、线程转储和堆转储的区别
有人能告诉我javacore、线程转储和堆转储之间的确切区别吗?在什么情况下使用这些中的每一个?
.net - 如何使用 MONO 进行线程转储?
如何在使用 MONO 运行的挂起应用程序中显示线程(堆栈跟踪)?
我知道我可以使用托管堆栈资源管理器 (MSE) 在 .NET 中完成此操作。因为应用程序只与 MONO 一起挂起,所以我需要用 MONO 来做。
或者有什么其他的想法我可以找到悬挂的地方吗?
java - Tomcat Web 应用程序线程转储
我有一个在 Tomcat 中运行的生产 Web 应用程序(Struts、iBatis、Hibernate),它在运行 6 到 7 天后会在服务请求时挂起,但在执行线程转储后会再次运行良好。
我很难弄清楚为什么会这样。
我只是想知道是否有人遇到过类似的事情。
java - java线程转储的评估
我得到了我的一个进程的线程转储。它有一堆这样的线程。我猜他们保留了一堆记忆,所以我得到了OOM。
我试图找出它是如何达到这种情况的。CustomThreadedExtractorWrapper 是一个包装类,它触发一个线程来完成一些工作(ExtractionThread,它使用 ZipExtractorCommonsCompress 从压缩流中提取 zip 内容)。如果任务耗时过长,ExtractionThread.interrupt()
则调用取消操作。
我可以在我的日志中看到取消发生了 25 次。我在我的转储中看到了其中的 21 个线程。我的问题:
- 这些线程的状态是什么?活着还跑?以某种方式被阻止?
- 他们显然没有死于 .interrupt() 吗?有没有确定的方法可以真正杀死一个线程?
- 堆栈跟踪中“锁定”的真正含义是什么?
Inflater.java 中的第 223 行是:
java - 主线程没有调用堆栈的Java线程转储?(jsvc)
我们有一个作为守护进程运行的 java 进程(在 jsvc 下)。每隔几天它就会停止做任何工作;到日志文件的输出停止(它非常冗长,每隔 5 分钟)并且它不消耗 CPU 或 IO。
日志文件或 syserr 或 sysout 中都没有记录异常。最后一条日志语句是在完成数据库提交之前,但是数据库服务器(MySQL)上没有打开的连接并查看代码,之后应该总是有额外的日志输出,即使它遇到了一个异常会冒泡。
我发现最奇怪的是,在线程转储(包括在下面)中,我们的代码中根本没有线程,主线程似乎没有任何上下文:
如前所述,这是一个使用 jsvc 运行的守护进程,但我不知道这是否与它有关(我可以重组代码以也允许直接运行它,以进行测试)。
关于这里可能发生的事情有什么建议吗?
谢谢... dwh
完整的线程转储: