Visual VM показывает, что FifoMessageDispatchChannel.dequeue() занимает много времени. Процесс Tomcat использует около 100% ядра процессора.
Почему dequeue() занимает так много процессорного времени?
Ответы (2)
Наиболее вероятная причина заключается в том, что вы вызываете метод получения потребителя с очень коротким ожиданием, но это невозможно сказать без дополнительной информации. Диспетчерский канал просто проверяет очередь на наличие данных и, если их нет, блокируется на заданный тайм-аут, ожидая, пока сигнал проснется и снова проверит или истечет время ожидания и вернется.
dequeue() не требует много процессорного времени, как другой парень сказал а>. Этот ответ на другой вопрос объясняет, что время на себя включает в себя время, затрачиваемое на другие действия, кроме обработки, например как жду.
Self и Total Time (CPU) включают время в методе, использующем процессор, и они равны 0 для dequeue(). Чтобы найти методы, использующие больше всего процессора, отсортируйте по собственному времени (ЦП), как Бедла указан.
dequeue
использует нулевое процессорное время. - person that other guy   schedule 10.09.2019TIMED_WAITING
и не потребляет процессорного времени. Чтобы найти реальную причину, вам нужно отсортировать записи в VisualVM по процессорному времени. - person Bedla   schedule 10.09.2019