我們廣泛使用Java ThreadPoolExecutor。具體來說,我們遵循一個fork連接模式,構建一個可調用列表並在它們上使用invokeAll()的定時變體。我們只使用這些線程池來執行I/O(非CPU密集型)操作,但是看着線程轉儲,我們看到這些特定線程消耗高CPU。查看FutureTask.awaitDone()實現,我可以看到採用對LockSupport.parkNanos()的交叉調用實現了忙等待策略。看看parkDanos本身的JavaDoc,我看到這個評論「可以虛假地返回......」,這讓我懷疑awaitDone()是否正在旋轉,從而導致高CPU。任何幫助將不勝感激!CPU對FutureTask.awaitDone的影響
0
A
回答
0
0
我認爲awaitDone並不是因爲它叫做parkNanos而「忙 - 等待」。 parkNanos在概念上與Object.wait()相似:一個線程在等待,但CPU可以同時處理其他事情。由於虛假的喚醒造成無限循環,但這些都是操作系統問題,並且也不意味着處於活動狀態的繁忙等待。
該線程可能會花費大量時間(「掛鐘時間」),但這不一定是CPU時間。我的建議是使用探查器,因爲他們可以做出這種區分,並且可以幫助您找到真正的CPU瓶頸。
相關的問題:
What specifically are wall-clock-time, user-cpu-time, and system-cpu-time in UNIX?
How can I Monitor cpu usage per thread of a java application in a linux multiprocessor environment?
相關問題
- 1. 網絡傳輸對CPU的影響
- 2. CPU對JavaScript有多大影響setInterval
- 3. 巨大的CPU影響LinkedBlockingQueue
- 4. cpu頻率對構建圖形卡的影響
- 5. 對Jquery的影響
- 6. MouseMove對性能的影響
- 7. 跳轉對PageViewController的影響
- 8. connection.commit()對性能的影響
- 9. `USE`對性能的影響
- 10. StrikeThrough對TextBlock的影響
- 11. javax.servlet.Filter對性能的影響?
- 12. 對性能的影響
- 13. JavaFX對背景的影響
- 14. 懸停對StackLayout的影響
- 15. Systemtap對性能的影響
- 16. QueryPerformanceCounter對性能的影響
- 17. UICollectionView對iPhone的影響
- 18. Solr深度調頁與cursorMark - 對大型結果集的內存/ CPU影響?
- 19. 並行進程的數量將如何影響CPU的性能?
- 20. 本地對象對Mocking的影響
- 21. CUDA API會影響CPU的RAM訪問性能嗎?
- 22. 如何找出高能量和cpu影響的原因?
- 23. Storm Cluster中更多執行程序比CPU /內核的影響
- 24. SpriteBatch.setBlendFunction()對Android沒有影響
- 25. DOCTYPE對CSS有影響嗎?
- 26. 應用對話框影響內聯相對Div(沒有懸停的影響)
- 27. Klout中的影響者和影響力
- 28. C++中的usleep(0)對Linux的影響
- 29. url的內容 - 對轉換的影響
- 30. 對TextField中的htmlText的影響
你檢查了探查CPU活動? – lbalazscs
我使用這裏描述的這種技術來編織jstack和top的輸出以查找有問題的線程。 http://www.boxjar.com/using-top-and-jstack-to-find-the-java-thread-that-is-hogging-the-cpu/ – RPJ
分析器提供了許多模式的詳細信息,而不僅僅是線程使用CPU,也是使用哪種方法。有免費的Java分析器,例如VisualVm和「Java Mission Control」。 – lbalazscs