我用JProfiler和YourKit分析了我的代码。但是,我还没弄清楚如何检测哪一段代码导致高CPU负载。
如果响应时间不好,检测热点是微不足道的。在我的情况下,虽然响应时间不是问题。只是在处理此特定请求的短时间内CPU负载非常高(非常高)。
如何确定哪个类/方法导致此问题?我想我正在寻找的是某种列表,它告诉我需要处理多少个CPU周期 - 或者等等。
答案 0 :(得分:6)
CPU负载实质上表示cpu有事可做的cpu周期数,而不仅仅是虚拟拇指。
因此,如果您的请求确实真正起作用(而不是等待磁盘I / O),那么当工作完成时,可以预期负载会很高,因为cpu有事可做。
你需要寻找的东西是cpu周期耗尽,就像响应时间开始攀升一样。
如果您的问题是请求太短以至于探查器无法显示您需要查看的内容,请考虑使用自动化工具来请求它处理数十万个请求。这应该有所帮助。
答案 1 :(得分:1)
在处理时,它是100%。在等待(例如I / O)时,它处于0%。中间没有。 当一个过程小于100%时,这是过去N毫秒内的滚动平均值。
如果有办法让它更有效率,那么这将花费更少的时间,而不是更少的百分比(必然)。
如果您想找到一种方法来缩短时间,请为其提供足够的工作量try this。