如何获取占用100%CPU的正在运行的Java程序的完整堆栈跟踪?

2022-09-01 11:38:58

我确实有一个jenkins实例,它陷入了某种无休止的循环中,没有任何可见的活动。

我可以获取正在运行的进程,那么如何生成可用于错误报告的跟踪?pid

我在 Linux 上运行。


答案 1

尝试使用jstack。它将为您提供线程正在执行的操作的完整列表。它所需要的只是过程 pid。


答案 2

获取线程转储。通过可视 VM 进行连接并请求转储。或者,如果在 unix 上,则 kill -3 pid 或在 Windows 上,进程控制台上的 Ctrl+Break 将为您完成此操作。转储将直接转到控制台。您还可以使用 jstack 来抛出转储。