问题标签 [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.
java - jstack 导致“Windbg 错误:WaitForEvent 失败”
在 Windows 7 上,我尝试通过执行命令从 Java 进程获取堆栈跟踪
jstack.exe -F xxx
来自另一个 Java 进程,其中 xxx 是目标进程的 PID。我收到错误
附加到进程时出错:Windbg 错误:WaitForEvent 失败!
知道为什么吗?
java - Java线程转储,找不到阻塞其他线程的线程
我们的应用程序滞后。
我正在使用jstack
util 获取线程转储。
我进行数据准备并对其进行排序。这就是我所拥有的:
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
,看看这个问题。
java - 来自java线程转储的理解行
我有以下使用 jstack 获得的线程转储,并且想知道单词旁边的十六进制值runnable
显示什么。我已经看到其他地方使用的相同值显示为:
这是否意味着其他线程正在等待该线程?
线程转储
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
可以在这里提供任何线索的系统范围的环境变量。
java - 可以获得Java应用程序的特定线程的调用堆栈吗?
我的 java 应用程序有 100 多个线程,每个线程都在做类似的事情。使用jstack可以打印所有线程的堆栈,但是信息太多,是否可以打印java的特定线程的堆栈?例如只打印一个java 应用程序的id 为100 的线程。
java - 如何解释这个线程转储?
我有一个在 linux 服务器上运行的应用程序。以下是应用程序的一些细节
1. 它基于spring 3,quartz 1.6.1 和httpclient 4.1.2 来解析页面。
2. 基本上它的作业会在一小时内运行 1 或 12 次(大部分是每小时一次)。
3.他们所有的并发使用默认值。
我的问题是工作偶尔会停止运行。这个问题上个月发生了两次。上次提出问题时,我做了这些事情:
1. 检查进度和日志。进步仍然存在。但是所有的业务日志都停了很久。
2.查看gc日志,好像没问题。
3. 使用 jstack 导出此进度的线程转储。
虽然我得到了线程转储,但我不知道如何解释它。有人可以帮我吗?
此致
这是线程转储的全部内容:
java - 如何找出线程卡住的原因?
我在我的 jstack 中看到这个线程似乎根本没有移动。关于如何弄清楚为什么卡住的任何指示?我没有看到任何锁或任何东西,唯一可疑的是“Object.wait()”引用。
此外,堆栈顶部的 DateTimeZone.java 中的第 95 行是这样的:
还有另一个线程也卡在类似的地方:
而 DateUtils.java:35 是:
我已经尝试使用 jvisualvm/jhat 进行研究,但并没有真正走得太远。
请注意,这是一个实时过程,而不是我在本地调试器中运行的过程,重新启动后它工作正常,因此它似乎是间歇性的。
任何帮助,将不胜感激!
谢谢!
在 jstack 中使用混合模式进行更新似乎提供了更多洞察力 - 它正在等待 pthread_cond_wait:
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?
java - 大多数 Jboss 线程处于状态 = BLOCKED
我们的大多数 jboss 线程都处于 BLOCKED 状态,并且 jboss 的线程数永远不会下降。
想了解如何减少线程计数以及为什么这么多线程处于 BLOCKED 状态。
我们有 450 个线程中的 380 个处于 BLOCKED 状态。
使用下面的来找出状态