我们广泛使用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