2012-03-29 76 views
2

我想確定上下文切換對我的Java線程的影響。因此,我必須首先知道「它被搶佔了多少次?」其次,如果可能的話,「我的線程停止執行多久了?」。我非常懷疑這可以從Java完成,但是嘿!有趣的事情是做不可能的事,對吧? :)即使如果我必須重新編譯VM或使用某種LINUX工具或黑客,我會很高興。所以現在我們知道這是不可能完成的,我們來做吧。 :)計算線程被搶佔了多少次?

編輯:加油的人。另一個問題是與優先事項有關。我想你只是喜歡簡單而無聊的問題。問題是清楚而有效的。

+2

這很像我過早的優化。您正在詢問正常JVM不提供的事情。你能編輯你的問題並解釋你爲什麼需要這樣做嗎? – Gray 2012-03-29 16:44:14

+1

可能的重複http://stackoverflow.com/questions/9916876/is-it-possible-to-create-a-high-priority-thread-with-a-regular-jvm-one-that-wil – Gray 2012-03-29 16:44:37

+1

即使它可以完成,但幾乎沒有任何價值。它將很大程度上取決於你測試的CPU,加上很多其他的環境因素,以及你正在測試的代碼的可變性。 – ControlAltDel 2012-03-29 16:46:12

回答

4

如果你能找到Linux的TID(線程ID)爲Java線程你感興趣的(假設你的JVM的地圖Java線程上的Linux線程),那麼僞文件/proc/<tid>/status包含很多統計數據,包括voluntary_ctxt_switchesnonvoluntary_ctxt_switches

+0

真棒!人們想要結束這個問題。 ts ts ts – JohnPristine 2012-03-31 15:40:54

2

它顯然不會做你想要的一切,但你可能會發現ThreadMXBeanjava.lang.management可用。

+0

這已經是事了。如果爭用時間增加意味着線程被阻塞/中斷。人們想要結束這個問題。 ts ts ts – JohnPristine 2012-03-29 18:59:23