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

java - jstack在服务器上不起作用

我们在服务器上使用 jstack 来检测 java 应用程序是否陷入僵局。它不适用于我们的一台 Linux 服务器。我认为 O/S 版本是:

在服务器上运行的 Java 版本:

当我尝试:

我得到:

当我尝试:

我得到:

有谁知道这是什么原因造成的?

0 投票
1 回答
5691 浏览

java - 如何使用 jstack 查找阻塞线程

使用 jstack 我得到了一棵正在运行的线程树。

  1. 以下 Thread.State 的含义是什么:

    • 等待
    • TIMED_WAITING
    • 可运行
  2. tid 和 nid 是什么意思?

  3. 线程的标题就像

    “事件批处理(Spring UAA/1.0.2)”守护进程prio=10 tid=0x0000000041e27800 nid=0x363b等待条件[0x00007f9a89267000]

    • 我如何导航到“等待条件”地址的源代码行
0 投票
2 回答
4784 浏览

java - Java 线程监控。如何找出非守护进程活动线程?

我在 JConsole 中看到我仍然有 2 个非守护线程,但我无法找出确切的线程(线程总数超过 30)。
Visual VM 不提供此类信息。

0 投票
11 回答
49875 浏览

java - jstack - 知名文件不安全

我正在使用 32 位 Oracle Java 1.6.0 在 x86_64 CentOS 5.7 上运行 tomcat 5.5。

tomcat 使用的 JVM 进程有 6421 pid。Tomcat 工作正常。

运行jstack时失败:

为了获得任何合理的输出,我需要使用 force 选项:

问题是:

  1. 错误消息“知名文件不安全”是什么意思?
  2. 什么是“知名”文件?
  3. 为什么/何时该jstack命令在没有强制选项的情况下不起作用?

提前致谢。

0 投票
1 回答
3546 浏览

java - Java 100% CPU

我在 jboss 上运行的服务器 (.war) 有时会达到 100% cpu。我使用 jstack 进行了转储,但没有成功看到占用 100% cpu 的指示。jstack -F 不成功,所以我在没有标志的情况下运行它。还有更多的行,但我不能全部发布...

我有一个想法,但不确定这是正确的:可能是因为 0x00002aaab58c0900 上的所有锁定?

还有一些像下面这样的可运行的

这是转储的开始

0 投票
2 回答
1327 浏览

java - Java 线程转储优先级值与 linux 上的实际线程优先级不对应?

我打算在我的 Java 代码中使用线程优先级。该应用程序应在我的 Linux 系统上运行:

在网上阅读后,我现在使用以下命令启动我的测试应用程序:

测试应用程序由以下两个类组成:

如果我让程序计数一分钟(NUM_MILLIS_TO_COUNT_FOR=1 60 1000),那么我得到以下输出:

根据此输出,优先级似乎具有预期的影响!但是,如果我使用“jstack”或“kill -s QUIT”生成线程转储,则会得到以下输出,这意味着每个线程都有相同的优先级(prio=10):

如果我在 Windows 机器上执行相同操作,则根据我在此处找到的优先级映射,prio 值是正确的。

那么,这是 jstack 中的错误,还是我做错了什么?

如果我执行“top | grep java”,我会得到以下信息:

这意味着主线程的优先级为 20,而“top -H | grep java”会产生以下输出:

这表明 java 线程优先级确实会影响 OS 线程的优先级。

但是 jstack 在 prio=10 中的值为 10 是从哪里来的呢?它只是一个任意值吗?

0 投票
1 回答
5417 浏览

linux - 用于收集进程的线程转储日志的 unix 脚本

我正在尝试生成有关 HashMap.put 函数的问题。我编写了一个测试代码,它将运行 100 多个线程。通过使用 jstack 或 kill 我能够获取我的进程的特定线程的线程转储。 .问题是我无法立即捕获线程转储,我希望将所有线程转储记录在一个文件中,直到进程结束。是否有任何 linux 命令或 shell 脚本可以编写来执行此操作?

0 投票
1 回答
2157 浏览

java - jstack 无法创建线程转储 - 线程 745:(状态 = BLOCKED)堆栈行走期间发生错误)

当我们在 Linux 上使用 $JAVA_HOME/bin/jstack 为 JBoss 4.2.3.GA 生成线程转储时......我们得到这个错误:

任何想法为什么会发生这种情况?我想也许有人在同时运行堆转储。还有其他想法吗?

0 投票
2 回答
22506 浏览

java - jstack -F 如何影响正在运行的 Java 进程?

我正在尝试诊断我正在使用的 Java Web 应用程序(Jenkins)变得无响应的问题。如果我在jstack没有-F标志的情况下运行它不会给我任何东西,但是如果我将标志放入强制线程转储,我不仅会得到结果,而且应用程序会开始响应并继续运行,就好像什么都没发生一样,直到它最终再次停止响应。

flag会jstack -F影响正在运行的 JVM 并导致无响应的应用程序再次开始响应?

0 投票
1 回答
3265 浏览

java - jstack 输出 - 获取 java Thread.getId 的 tid

我查看了有关获取线程 ID 的现有问题,例如java-thread-id-and-stack-trace

但我无法弄清楚一些看似简单的事情。我想制作一个 JSP 工具来停止 Java 中的线程。

我知道这通常是个坏主意,但我们需要它,因为我们不能在我们的环境中使用 JConsole 会导致 JBoss 的一些硬化。

我的问题是,取一个 jstack 输出示例:

  1. Event Batch Processing (Spring UAA/1.0.2)" daemon prio=10 tid=0x0000000041e27800 nid=0x363b waiting on condition [0x00007f9a89267000] 从此哪个 id 将是thread.getId()定义的java.lang.Thread?这一行的最后一个标记是什么[0x00007f9a89267000]
  2. 如何将(Java 代码将是超级)hex转换为 Java long
  3. 你能告诉我为什么这不起作用 -> 我tid=从一个挂在一个永无止境的循环中的线程的 jstack 中获取了一个十六进制。然后我这样做了:

    /li>

未找到此输出。输入参数是 tid - 粘贴在 Windows 7 calc, Programmer mode (hex) 中,然后单击 Dec.

更新:

在我的测试代码中,当我制作了一个无限循环的 JSP,每隔几 10000 次迭代输出一个字符 - 然后做了一个 jstack,得到:

我运行 jstack 几次,每次都得到这个条目。

但是当我用 thread 运行我的 JSP 时id = 000000000d4eb000,它找不到它,因为应用程序容器唯一地命名了线程,我能够找到线程并且当我打印时:

我得到:

那么 jstack 显然将其识别为0x000000000d4eb000内部 JVM 所知道的 发现1389 hex :56d?最后将 JSP 改为按名称搜索并停止线程。幸运的是线程名称都不同。但这是一个错误 - 运行 Windows、JBoss 4.2、Java 1.6 更新 32?