问题标签 [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 投票
0 回答
219 浏览

java - 使用 -F 开关时 jstack 输出不同

我看到jstack -l <pid>vs的输出jstack -F <pid>完全不同(尽管基本相同)。我的理解是 -F 当你使用 jdwp 协议来获取堆栈转储信息时(经验从 jstack 输出的开头注明)。

常规 jstack 的输出:

jstack -F 的输出

这会导致线程堆栈转储解析实用程序(如http://spotify.github.io/threaddump-analyzer/ )出现问题,这些实用程序需要标准格式的输出。有没有办法(开关或实用程序)将输出从 jstack -F 转换为常规 jstack 输出?我懒得编写严格的正则表达式来转换输出,并且正在检查是否有人已经完成了艰苦的工作。提前致谢!

0 投票
1 回答
306 浏览

linux - jstack -l 的解决方法

我有一个名为的 java 应用程序my-app,它从特定用户运行my-app-user,我想每小时进行一次线程转储。我发现jstack它与 JDK 捆绑在一起,我想用-l标志执行它。但是,不幸的是,我发现my-app-user如果我想获得我的线程转储,我应该以用户身份运行 jstack。问题是 jstack 具有 root:root 所有权,我无法更改它。这个问题有一些解决方法吗?我不知道如何解决这个问题。

谢谢

0 投票
3 回答
310 浏览

java - Java ConcurrentHashMap.keySet() 挂起

我在 Linux 机器上观察到一个奇怪的行为。该代码在 Win 7 上运行良好。有问题的代码挂在 xmlToJavaMap.keySet() 上。两个日志语句都没有记录!!!在堆转储中未发现死锁。

平台:java 版本 "1.7.0_11" Java(TM) SE Runtime Environment (build 1.7.0_11-b21) Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode) Red Hat 4.4.7

0 投票
0 回答
216 浏览

java - 有没有办法检查linux中的java进程状态历史,以及什么事件改变了该进程的状态。

我在 Linux 中的 java 进程将其状态更改为 Traced/Stopped(在 Linux 中使用 top 命令检查时的 T 状态)

正在创建空线程转储。(已经尝试过 jstack、jstack -F、kill -3)。(也检查了 catalina.out 日志,没有线程转储)

生成的堆转储也是空的。

内存和CPU消耗也很好。

Java 版本 - 1.6_85 Linux 2.6.32-431.el6.x86_64

有没有办法调试这个问题。

0 投票
2 回答
147 浏览

java - 转储文件中的特殊 java 线程

当我的 java 应用程序变得无响应时,我使用jstack -F(如果我在jstack没有-F标志的情况下运行它不会给我任何东西)命令转储线程信息,并且转储文件中有一个特殊的线程。

在我使用之后jstack -F,应用程序开始响应并继续运行,就好像什么都没发生一样,直到它最终再次停止响应。

当应用程序正常时,我使用jstack -F搜索最后一个线程,它总是IN_NATIVE

这是我的问题。

  1. 这个线程可以使我的应用程序无响应吗?
  2. 这是什么线程?
0 投票
1 回答
89 浏览

java - Jboss:无法获取线程转储

我正在尝试为我的 Jboss 应用程序获取线程转储,但我遇到了错误。是否有解决此问题或任何其他获取线程转储的方法的解决方法。

谢谢你。

0 投票
2 回答
4038 浏览

java - GC日志让我很困惑

提问后,所有线程都被阻塞了,就像 STW 一样,没有响应,我添加了一些 JAVA_OPTS。

这是我的新选择。

该应用程序刚刚停止工作。

以下是( wasgc log的最后一个词)的最后几行。gc logstopped:

然后,我使用jstack -m了命令。然后应用程序恢复正常。

这是下一个 gc 日志(第一行305.4698351 second是我执行jstack command的时间减去应用程序停止工作的时间)。

当时2016-01-09 18:43该应用程序再次停止工作。

然后我jstack -m再次使用命令,应用程序再次恢复正常。

这是 gc 日志。

我发现,我执行jstack -m命令后,GC log ParNew: from size->to size(9437184K)异常,to size变得越来越大,就像一些内存无法释放。但是我jstack -m第二次执行,一段时间后to size变小了。

当系统不正常时,该jstack命令必须添加选项-F,并且jmap需要执行几个小时。

这是jstack -F结果文件中的一个特殊线程。除 in_vm 外,所有线程的状态都被阻塞。

这是我的环境。

0 投票
1 回答
354 浏览

java - jstack线程转储是否一致?

我从jstack. 它表明两个线程锁定在同一个对象上locked <0x00000000c0313ce0>。当 jstack 显示第一个线程的堆栈跟踪不是在同一时间,当它为第二个线程获取堆栈跟踪时,是否可能出现这种情况?或者还有什么可能导致这种锁定情况?

0 投票
2 回答
8855 浏览

java - 分析java线程转储

我花了最后一天试图理解这实际上意味着什么。没有足够的信息,或者我找不到任何有用的东西。

“条件等待”是什么意思?我们在等显示器吗?“0x00007f445cd1a000”表示什么?

“停车等待”是什么意思?什么是“0x00007f59c9e1c278”?

源代码:

0 投票
0 回答
232 浏览

java - JStack tid 和 Thread.getId 如何关联

Jstack 输出包含 tid(线程 id)。我相信 tid 对应于 Thread.getId() 的十六进制值。但事实并非如此。我用一个具体的例子对此进行了测试,得到了不同的值。我对 tid 是如何形成的很感兴趣。如何通过 Thread.getId() 的值在 jstack 中找到线程?

例子: