我正在执行JStack命令,以便在一定的时间间隔上接受线程转储。
我观察到,每当JStack执行时,目标进程上的所有线程都会停止。在查看了我的log4j 2日志之后,我得出了这个结论,在这些日志中,我发现没有记录JStack运行的持续时间。
有人能告诉我,JSTack是否挂起/停止目标进程中的所有线程?
发布于 2019-03-19 09:09:57
任何线程(哪怕只有一个线程)的堆栈跟踪都会将所有线程带到safepoint。你可以看到这个
这将在JVM因任何原因(而不仅仅是GC)停止时打印。
-XX:+PrintGCApplicationStoppedTime这将打印统计数据,包括停止的原因。
-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1有一个计划引入一个特定于线程的停止,但是jstack需要每个线程都使用safepoint。
发布于 2019-03-18 16:01:47
发布于 2019-03-18 13:53:51
我认为当一个线程快照被拍摄时,会有一个周期性的停止世界暂停.
https://dzone.com/articles/logging-stop-world-pauses-jvm
在传统意义上,它并不改变线程的状态。
https://stackoverflow.com/questions/55222707
复制相似问题