我正在执行JStack命令以按一定间隔进行线程转储。
我观察到,每当执行JStack时,目标进程上的所有线程都会停止。在查看我的log4j 2日志后,我得出了这个结论,在JStack运行期间我没有发现任何日志。
有人可以告诉我JSTack是否挂起/停止目标进程中的所有线程吗?
答案 0 :(得分:4)
答案 1 :(得分:3)
获取任何线程(甚至只有一个)的堆栈跟踪都会使所有线程到达安全点。您可以使用
查看每次由于某种原因(不仅是GC)而停止JVM时,都会打印一次
-XX:+PrintGCApplicationStoppedTime
这将打印包括停止原因的统计信息。
-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1
有计划引入特定于线程的停止,但是jstack
需要安全指向每个线程。
答案 2 :(得分:0)