我確實遇到了我開發的應用程序的問題。當我長時間運行它時,CPU負載緩慢上升。這是45分鐘後Java VisualVM的屏幕截圖。增加的CPU負載來自哪裏?
正如你可以看到,內存佔用是非常穩定和線程,以及數量。應用程序打開一個LAN插座並每2秒進行一次測量。這個測量運行在一個單獨的線程中(可以在右下方的線程圖中看到)。
CPU使用率緩慢而穩定地增加,一夜之間累積到70-80%左右,此時整個系統明顯放慢(顯然)。現在我不想要這個增長,但是找不到原因。沒有內存泄漏(這也會導致內存的連續增加),也不會產生越來越多的線程(因爲這個計數也是穩定的)。
我的應用程序有一個廣泛的GUI和幾個線程。下面是從探查線程列表:
我標有「我」的線程黃色。因此,MeasurementCommunication.startMeasurement
線程會在需要時創建(並再次終止)。所以只有其中一個人在任何時候運行。
因此,長話短說:我不知道這個CPU的增加來自哪裏。你有什麼想法?也許這是一個普遍的Java問題? 如果您需要更多信息或詳細信息,請告訴我,我嘗試回答。 ;)
配置文件的CPU使用情況,並查看熱點時它的位置。 – bmargulies
您是否監控過GC時間(例如-verbose:gc)? – assylias
@assylias會帶來什麼?你認爲GC不能正確工作嗎? – brimborium