在 java 8 上运行 JStack 会停止所有线程吗?

Rah*_*wal 3 java jvm jvm-hotspot jstack java-8

我正在执行 JStack 命令以在特定时间间隔进行线程转储。

我观察到每当 JStack 执行时,目标进程上的所有线程都会停止。在查看我的 log4j 2 日志后,我得出了这个结论,我发现在 JStack 运行期间没有日志记录。

有人能告诉我 JSTack 会挂起/停止目标进程中的所有线程吗?

apa*_*gin 5

是的,线程转储和堆转储是 JDK 8 中的 stop-the-world 操作。
HotSpot JVM 在全局安全点执行它们。

有关更多信息,请参阅答案。