为什么 dequeue() 占用如此多的处理器时间?

Why is dequeue() taking so much processor time?

Visual VM 显示 FifoMessageDispatchChannel.dequeue() 花费了大量时间。 Tomcat 进程使用了​​大约 100% 的处理器内核。

最可能的原因是您在等待很短的时间内调用消费者接收方法,但如果没有更多信息就无法判断。调度通道只是检查队列中的数据,如果 none 存在,将阻塞给定的超时等待信号唤醒并再次检查或超时和 return。

dequeue() 没有占用太多处理器时间,因为 . This answer to another question 解释说自我时间包括花在处理以外的事情上的时间,例如等待。

Self 和 Total Time (CPU) 在使用处理器的方法中包括时间,对于 dequeue() 它们为 0。要查找使用处理器最多的方法,请按自用时间 (CPU) 排序,如 .