java - 使用 jstack 清空 Tomcat 线程转储

标签 java tomcat thread-dump jstack

尝试在 Windows 服务器中收集 Apache Tomcat8.5 的线程转储,我结束了使用 jstackpsexec 如下(因为直接使用 jstack 是不可能的,所以我我正在使用 pexec 使用 syetm 进程执行 jstack):

PsExec.exe -s "C:\Program Files\Java\jdk1.7.0_40\bin\jstack.exe" -l 5340 > dumps.txt

5340是正在运行的Tomcat8进程的PID。

执行开始时没有任何错误,并显示以下输出:

PsExec.exe -s "C:\Program Files\Java\jdk1.7.0_40\bin\jstack.exe" -l 5340 > dumps.txt

 PsExec v2.2 - Execute processes remotely Copyright (C) 2001-2016 Mark Russinovich Sysinternals - www.sysinternals.com

Starting C:\Program Files\Java\jdk1.7.0_40\bin\jstack.exe on VMNAME...

当我检查 dumps.txt 时,我发现它是空的,即使我以管理员身份运行命令行也是如此。

enter image description here

感谢您的帮助!

最佳答案

作为讨论的结论。您需要使用与要检查的 VM 版本相同的 VM 版本来执行 jstack 命令。如果出现任何错误,您可以尝试将 -F 参数添加到 jstack。 此外,您不再需要在较新的 VM 上使用 PsExec 工具。

关于java - 使用 jstack 清空 Tomcat 线程转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58853893/

相关文章:

Java BitSet,子集与交集

java - Android Launcher2源码导入

java - 无法使用 Tomcat 5.5 和 Hibernate 连接到数据库

java - 如何从 WebSocket 实现开始

java - Full GC 期间的线程转储

wildfly - 将 VisualVM 窗口连接到 Wildfly 16

java - 检查HashMap中的键是否存在于句子中

java - Restwebservices 中的正则表达式

Galileo 上的 eclipse tomcat 配置

java - 使用 Samurai 进行线程转储分析