我正在執(zhí)行JStack命令以在特定時間間隔內獲取線程轉儲。我觀察到,每當JStack執(zhí)行時,目標進程上的所有線程都會停止。在查看了我的log4j 2日志后,我得出了這個結論,其中我發(fā)現(xiàn)在JStack運行期間沒有日志記錄。有人可以告訴我JSTack是否暫停/停止目標進程中的所有線程?
3 回答

PIPIONE
TA貢獻1829條經驗 獲得超9個贊
獲取任何線程(即使只有一個線程)的堆棧跟蹤都會將所有線程都置于安全點。你可以用
每次因任何原因(不僅僅是 GC)停止 JVM 時,都會打印
-XX:+PrintGCApplicationStoppedTime
這將打印統(tǒng)計信息,包括停止的原因。
-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1
有一個計劃引入一個線程特定的停止,但需要安全指向每個線程。jstack

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
我認為在拍攝線程快照時,會有一個周期性的停止世界暫停。
https://dzone.com/articles/logging-stop-world-pauses-jvm
它不會改變傳統(tǒng)意義上的線程狀態(tài)。
添加回答
舉報
0/150
提交
取消