2016-10-24 9 views
0

Ниже приведен снимок экрана «Горячие точки» «Представления процессора» JProfiler, когда я исследую свое приложение в режиме выборки. Верх стека (76% использования ЦП) занят «java.lang.Thread.run».Что означает высокое время автономной работы в «java.lang.Thread.run» в представлении HotSpot?

Мой вопрос в том, какие именно эти темы? Являются ли эти потоки ответственными за другие горячие точки, отображаемые со второй позиции и ниже (отмечены в зеленой коробке)? Или это те потоки, которые выполняют некоторые задние задачи, такие как сборки мусора и все (соответствующие методы не видны в списке горячих точек)?

enter image description here

+0

Почему он получает отрицательные голоса? Не могли бы вы прояснить? –

+1

'java.lang.Thread.run' - это метод, обычно вызываемый из' Thread.start' как «работа для работы». Профилировщик объединяет методы вместе. Методы и потоки - это разные понятия, и хотя метод связан с потоковой обработкой, это не означает, что «потоковая передача» сама по себе является проблемой (потоки запускают код и во многих других методах!). Это, как говорится, у меня нет хорошего объяснения для этого вывода, и я ожидал бы других высоких методов самообслуживания:} – user2864740

+1

@ArnabBiswas Вы начинаете много недолговечных потоков? Тогда большую часть времени будет использоваться для запуска потока и не для выполнения фактической работы. –

ответ

1

Большинство веб-серверов (Java, а в противном случае, в том числе JBoss) следуют модели «один поток для каждого запроса», то есть каждый запрос HTTP, полностью обрабатывается ровно одну нить. Этот поток часто проводит большую часть времени, ожидая таких вещей, как запросы БД. При необходимости веб-контейнер будет создавать новые потоки.

Эти темы не являются ответственностью за деятельность по сбору мусора. JVM всегда выполняет GC в выделенных потоках, «потоках GC». Всякий раз, когда потоки GC активны, они конкурируют с фактическими «потоками приложений» для доступных процессоров и, следовательно, временем процессора.

Чтобы ответить на ваш вопрос, да, все задачи, соответствующие пользовательским запросам, рассматриваются здесь. Другими словами, ваш процессор тратит 76% времени на обработку пользовательских запросов.

Все время вызова вложенных методов записывается в первую горячую точку, которую вы указали на изображении.

+0

Методы, которые появляются в зеленой коробке (вниз по стеку), также выполняются потоками пользователей, которые вы упомянули. Итак, я не уверен, что само время «java.lang.Thread.run» включает в себя само время этих методов? –

+1

Нет, они не включены. Если функция должна иметь вложенные вызовы, вы можете развернуть значок «+», чтобы увидеть их собственные собственные времена. – arnabkaycee