我的程序一直運行在最大1%的CPU使用率,但有時因爲程序內部的一些事件,我無法確定,它有100%的使用率,每15秒約5-10秒。它看起來像一個線程導致使用峯值,但我無法確定的來源(有8000類,所以這很難)。很難測試問題是否仍然存在(例如,在使某部分代碼「死亡」之後),因爲該問題有時會在虛擬機生命週期的幾個小時後開始存在。CPU使用率峯值
你有什麼想法可以幫助我找到問題的根源嗎?
我的程序一直運行在最大1%的CPU使用率,但有時因爲程序內部的一些事件,我無法確定,它有100%的使用率,每15秒約5-10秒。它看起來像一個線程導致使用峯值,但我無法確定的來源(有8000類,所以這很難)。很難測試問題是否仍然存在(例如,在使某部分代碼「死亡」之後),因爲該問題有時會在虛擬機生命週期的幾個小時後開始存在。CPU使用率峯值
你有什麼想法可以幫助我找到問題的根源嗎?
沒有更多信息,甚至不可能猜測問題的原因。
我會建議使用探查器(例如VisualVM)來確定哪個線程會導致問題,並且可能會發生什麼情況。
使用分析器會告訴你,例如:
我使用VisualVM的一個Java剖析,我的大部分帖子都得到了同樣的遺囑執行人,所以我不能發現,是在運行線程秒殺的時間。 – user1656546
是否由您自己的線程引起的峯值?或者由一個虛擬機? – thkala
虛擬機,但我剛安裝JProfiler,它似乎比VisualVM更好,我認爲它會幫助我很多。 – user1656546
聽起來像您需要 – mre