问题标签 [jstack]

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 投票
2 回答
4500 浏览

java - jstack 导致“Windbg 错误:WaitForEvent 失败”

在 Windows 7 上,我尝试通过执行命令从 Java 进程获取堆栈跟踪

jstack.exe -F xxx

来自另一个 Java 进程,其中 xxx 是目标进程的 PID。我收到错误

附加到进程时出错:Windbg 错误:WaitForEvent 失败!

知道为什么吗?

0 投票
1 回答
2479 浏览

java - Java线程转储,找不到阻塞其他线程的线程

我们的应用程序滞后。

我正在使用jstackutil 获取线程转储。

我进行数据准备并对其进行排序。这就是我所拥有的:

198 个线程被阻塞。

据我了解waiting to lock <0x0000000582e56bc8>,他们都在等待一些带有 ID 的线程0x0000000582e56bc8。奇怪的是我在线程转储输出中找不到这个0x0000000582e56bc8,我找不到他们都在等待什么。

或者它不是真的?这是什么0x0000000582e56bc8

这是转储的小和平:

所有 198 个其他线程转储都相同

更新 1.@Holder 评论后

更新 2感谢@Holder

据我了解waiting to lock <0x0000000582e56bc8>,意味着线程正在等待0x0000000582e56bc8,这是一个指针。接下来你应该找到- locked <0x0000000582e56bc8>. 你会发现 Thread 锁定了一个对象。然后我查看了堆栈跟踪,最后找到了罪魁祸首。

如果你也有问题com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector,看看这个问题

0 投票
1 回答
317 浏览

java - 来自java线程转储的理解行

我有以下使用 jstack 获得的线程转储,并且想知道单词旁边的十六进制值runnable显示什么。我已经看到其他地方使用的相同值显示为:

这是否意味着其他线程正在等待该线程?

线程转储

0 投票
1 回答
520 浏览

java - pyCharm 调试:没有 jstack 的 JRE?

我需要在 Windows 7 上调试 pyCharm 社区版本并尝试按照他们的手册所说的:

堆栈

此命令行实用程序随 JDK 安装一起提供,可在 JAVA_HOME\bin 目录中找到。确保使用与运行 IDE 的版本相同或接近的 JDK 版本(请参阅帮助 | 关于)。如果 IDE 在 32 位 JDK 下运行,而您从 64 位 JDK 发行版运行 jstack,它将无法工作,反之亦然。

要使用 jstack,您需要 IDE 进程标识符 (PID)。可以使用与 jstack 位于同一目录中的 jps 实用程序获取 PID。

jps -mv

我的 pyCharm:帮助/关于读取:JRE 1.7.0_40 b43 x86

然而,在C:\Program Files (x86)\Java\jre7\bin没有jps和没有jstack。我不习惯 Windows 中的命令行 - 也许我在这里做错了什么?我应该在不同的目录中查找吗?我找不到任何JAVA_HOME可以在这里提供任何线索的系统范围的环境变量。

0 投票
2 回答
104 浏览

java - 可以获得Java应用程序的特定线程的调用堆栈吗?

我的 java 应用程序有 100 多个线程,每个线程都在做类似的事情。使用jstack可以打印所有线程的堆栈,但是信息太多,是否可以打印java的特定线程的堆栈?例如只打印一个java 应用程序的id 为100 的线程。

0 投票
1 回答
3219 浏览

java - 如何解释这个线程转储?

我有一个在 linux 服务器上运行的应用程序。以下是应用程序的一些细节
1. 它基于spring 3,quartz 1.6.1 和httpclient 4.1.2 来解析页面。
2. 基本上它的作业会在一小时内运行 1 或 12 次(大部分是每小时一次)。
3.他们所有的并发使用默认值。
我的问题是工作偶尔会停止运行。这个问题上个月发生了两次。上次提出问题时,我做了这些事情:
1. 检查进度和日志。进步仍然存在。但是所有的业务日志都停了很久。
2.查看gc日志,好像没问题。
3. 使用 jstack 导出此进度的线程转储。
虽然我得到了线程转储,但我不知道如何解释它。有人可以帮我吗?
此致

这是线程转储的全部内容:

0 投票
2 回答
1157 浏览

java - 如何找出线程卡住的原因?

我在我的 jstack 中看到这个线程似乎根本没有移动。关于如何弄清楚为什么卡住的任何指示?我没有看到任何锁或任何东西,唯一可疑的是“Object.wait()”引用。

此外,堆栈顶部的 DateTimeZone.java 中的第 95 行是这样的:

还有另一个线程也卡在类似的地方:

而 DateUtils.java:35 是:

我已经尝试使用 jvisualvm/jhat 进行研究,但并没有真正走得太远。

请注意,这是一个实时过程,而不是我在本地调试器中运行的过程,重新启动后它工作正常,因此它似乎是间歇性的。

任何帮助,将不胜感激!

谢谢!

在 jstack 中使用混合模式进行更新似乎提供了更多洞察力 - 它正在等待 pthread_cond_wait:

0 投票
1 回答
1158 浏览

java - 无法对我的 java 应用程序运行 jstack -l

我的应用程序卡住了,然后我想检查线程状态。但是我无法通过 jstack -l 33822 从我的应用程序中获取线程转储..

然后我使用 -F 尝试进行线程转储。我收到如下错误:

这是JVM的缺陷吗?

0 投票
1 回答
1358 浏览

java - jstack 的输出缺少 tid 和 nid 信息

我有一个 CPU 利用率几乎达到极限的 Linux 机器。我曾经top追踪有问题的 Java 进程(12462)和底层线程(12465 和 12466)。我希望jstack在输出中运行并搜索 30b1 和 30b2(上述线程转换为十六进制),以便弄清楚 Java 在做什么。

当我在jstack没有任何标志的情况下运行时,它返回以下错误:

但是,当我运行时jstack -F,输出不包含 tid 或 nid 信息。这是输出的摘录:

我跑了jstack -F -l,但命令似乎锁定了。

当我运行时jstack -F -m,我能够找到十进制线程,但输出没有包含足够的实际 Java 堆栈,我无法弄清楚它在做什么。这是输出的另一部分:

我错过了什么?我怎样才能jstack向我展示 tid 和 nid?

0 投票
0 回答
1036 浏览

java - 大多数 Jboss 线程处于状态 = BLOCKED

我们的大多数 jboss 线程都处于 BLOCKED 状态,并且 jboss 的线程数永远不会下降。

想了解如何减少线程计数以及为什么这么多线程处于 BLOCKED 状态。

我们有 450 个线程中的 380 个处于 BLOCKED 状态。

使用下面的来找出状态