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

jstack - 无法使用 Jstack 进行线程转储。

我想对我的 java - Jmeter 机器进行线程转储。在我的 Jmeter 机器中,我可以看到许多线程在测试计时后没有关闭和卡住。为了调试更多,我尝试进行线程转储(使用“jstack -PID>>Fileae.txt”命令)。但是此命令在 24 小时后仍在运行,尽管这创建了一个空文本文件。为什么我无法获取该 java 进程的线程转储。

0 投票
0 回答
439 浏览

java-8 - Java 8u20 核心转储(线程转储缺少堆栈跟踪)

我最近使用jvisualvmjstack分析了一个 Java 8u20 的 tomcat 核心转储。对于大多数线程,我可以看到完整的堆栈跟踪,例如

但是对于当前线程(导致核心转储的线程)没有堆栈跟踪,我所看到的只是:

我发现以下解释IN_JAVA

  • NEW: 刚启动,即正在初始化。
  • IN_NATIVE: 在本机代码中运行。
  • IN_NATIVE_TRANS: 对应的过渡状态。
  • IN_VM: 在虚拟机中运行。
  • IN_VM_TRANS: 对应的过渡状态。
  • IN_JAVA: 在 Java 或存根代码中运行。
  • BLOCKED: 在 vm 中被阻止。
  • BLOCKED_TRANS: 对应的过渡状态。

日志显示了从 java 调用 VM 本机代码的he_err方法,但我对 java 端堆栈的其余部分感兴趣。

任何关于为什么会这样的想法将不胜感激!

0 投票
0 回答
193 浏览

java - Java - 为什么 jstack 不能在一个紧密的循环中工作

我注意到当代码处于紧密循环中时 jstack 不起作用。

例如在这段代码中:

如果您运行 jstack,您会收到以下消息:

无法打开套接字文件:目标进程没有响应或HotSpot VM未加载当目标进程没有响应时可以使用-F选项

只要您允许代码“呼吸”,例如通过每隔几千次迭代添加一个 System.out,它就可以正常工作。

请注意,如果您想从 jmc 运行 jconsole 或飞行记录器,这也是一样的。

我想了解为什么会这样,以及是否有什么我可以做的,因为我想描述一个紧密的循环。

0 投票
1 回答
621 浏览

aem - jStack的输出

我们在 Windows 机器上使用 Adob​​e AEM。我们的 Author 实例变得非常慢,为了调查同样的问题,我们尝试使用命令 jstack.exe pid > output file 进行线程转储

问题是这个命令的输出并不总是相同的。下面是获得的两种不同的输出。

这个几乎没有提供任何关于哪个线程被阻塞的信息

下面是第二个输出

想了解为什么 2 个不同的输出。此外,第二个输出在线程转储分析器等工具中提供了非常描述性的摘要。

0 投票
1 回答
1910 浏览

java - jstack 是否停止在更新的 JDK8 版本上工作?

我惊讶地发现,最近 jstack 以某种方式停止了在更新的 JDK 8 上的工作。我不确定这发生在哪个版本上,但我确实得到了:

我确定 PID 是正确的,我什至尝试了-F似乎阻止 jstack 的模式,我等了很多分钟,它似乎根本没有响应。

如果有人可以提供一种替代方法来生成调查死锁等所需的线程转储,我将非常愿意尝试它们。

附加系统信息

0 投票
0 回答
226 浏览

java - removeAll() 处的线程转储

我有一个按钮可以删除现有的 JPanel 并添加新的 JPanel。但是,当我按下该按钮时,我的程序将挂起。我使用 jstack 跟踪并发现程序卡在 removeAll()

这些是相关的线程转储:

我对分析线程转储的知识有限,但我做了一些研究。

经过locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)

这是否意味着 AWT-EventQueue-0 持有这些组件?如果是,那么为什么 AWT-EventQueue-0 不删除该组件,因为它“拥有”该组件并处于可运行状态?谢谢 !

0 投票
2 回答
5114 浏览

java - 为什么在 Windows 上运行 jstack 会出现“无法附加到 64 位进程”错误?

我试过命令

jstack -l <pid>并得到以下错误 -

然后我尝试了这个命令 -

jstack -F <pid>并得到这个错误 -

如何在 Windows 上成功运行 jstack?更具体地说,我正在运行 Windows 7。

0 投票
1 回答
2971 浏览

java - 为什么 /tmp/.java_pid 时 jstack 不工作套接字文件已被删除

通常,我使用 jstack 来检查 java 进程是否正常工作。虽然我发现,当/tmp/java_pid<num>(num是java进程的pid)socket文件被删除时,jstack将无法工作。像这样:

(PS.我不想用“-F”,可能还有其他问题)

有没有办法改变套接字文件的位置(不是/tmp)?还是在发现不存在时再次生成套接字文件?现在我所做的是再次重新启动 java 进程,这是一个非常糟糕的解决方案。

谢谢!

0 投票
2 回答
4361 浏览

java - Java应用程序cpu负载过高的解决方法

今天发现我的服务器cpu负载太高,服务器只是运行一个Java应用。

下面是我的操作步骤。

  1. 我使用top命令来查找应用程序的 pid。PID 为 25713。

  2. 我使用top -H -p 25713命令找到了一些使用最多 cpu 的 pid。比如25719 tomcat 20 0 10.6g 1.5g 13m R 97.8 4.7 314:35.22 java

  3. 我使用jstack -F 25713命令打印转储信息。例如"Gang worker#4 (Parallel GC Threads)" os_prio=0 tid=0x00007f5f10021800 nid=0x6477 runnable

  4. 我从转储文件中搜索了 pid。然后我发现使用cpu最多的pids都像"Gang worker#4 (Parallel GC Threads)" os_prio=0 tid=0x00007f5f10021800 nid=0x6477 runnable

  5. 我使用jstack命令后,cpu就正常了!

以下是我的问题:

  1. 为什么GC Threadscpu负载太高。
  2. 为什么我使用jstack命令后cpu变得正常。

不止这一次,每一次。

这是一些正常的日志。2015-10-10T10:17:52.019+0800: 71128.973: [GC (Allocation Failure) 2015-10-10T10:17:52.019+0800: 71128.973: [ParNew: 309991K->206K(348416K), 0.0051145 secs] 616178K->306393K(1009920K), 0.0052406 secs] [Times: user=0.09 sys=0.00, real=0.01 secs]

当 CPU 过高时,GC 日志停留在 中[GC (Allocation Failure) 2015-10-10T10:18:10.564+0800: 71147.518: [ParNew:,没有其他日志。

当我执行jstack命令时,打印日志

0 投票
1 回答
314 浏览

java - java应用程序装死。Jstack可以使应用程序恢复吗?

今天发现我的应用程序无法访问,然后登录我的服务器,发现应用程序的线程正常,但是CPU负载太高。

然后,我想使用jstack命令。但是它指出了need -F option。现在我发现GC日志留在了[GC (Allocation Failure) 2015-10-10T10:18:10.564+0800: 71147.518: [ParNew:,并且没有其他日志。

然后,我使用jstack -F命令。奇怪的事情发生了。CPU正常了,我的服务器也正常了,GC日志也正常了,第一行是[GC (Allocation Failure) 2015-10-10T10:17:50.757+0800: 53501.137: [ParNew: 210022K->245K(235968K), 369.6907808 secs] 400188K->1 90410K(1022400K), 369.6909604 secs] [Times: user=3475.15 sys=11.69, real=369.63 secs]。而jstack的结果的可运行线程都是GC线程,比如"Gang worker#4 (Parallel GC Threads)" os_prio=0 tid=0x00007f5f10021800 nid=0x6477 runnable

这是我的 JAVA_OPTIONS

-server -Dfile.encoding=UTF-8 \ -Xms2g -Xmx2g -Xmn512m \ -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8 \ -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction= 75 \ -XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -Xloggc:/data/logs/gc-skynetlog_web.log \ -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M \ -XX :+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/dump_skynetlog_web.hprof