Понимание процессорного времени в профилировщике VisualVM

Я начал использовать visualvm для профилирования моего приложения, которое я запускаю в Eclipse. Затем я запускаю visualvm, который поначалу дает правдоподобные результаты.

введите здесь описание изображения

Через какое-то время в мониторе появляются два процесса, которые потребляют огромное количество времени.

введите здесь описание изображения

Я не использовал их намеренно. Через время они исчезают. Являются ли они артефактом процесса профилирования и стоит ли мне беспокоиться?

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


person peter.murray.rust    schedule 11.06.2013    source источник


Ответы (3)


Лучше начать с выборки ЦП, если вы не знаете, какая часть кода медленная. Как только вы лучше узнаете (на основе результатов выборки), что происходит, вы можете профилировать только часть вашего приложения, что является медленным. Вам нужно установить корни профилирования и инструментальный фильтр и не забудьте сделать снимок собранных результатов. См. разделы Профилирование с помощью VisualVM, часть 1 и Профилирование с помощью VisualVM, часть 2, чтобы получить дополнительную информацию о профилировании и о том, как установить корни профилирования и инструментальный фильтр.

person Tomas Hurka    schedule 12.06.2013

VisualVM использует Java для выполнения своей работы. Это означает, что вы увидите некоторые артефакты, связанные с вызовами RMI, которые он делает. Вы можете игнорировать их.

Я использую YourKit, который этого не делает, но он платный ;)

person Peter Lawrey    schedule 11.06.2013
comment
Более вероятный. Если пула потоков нет, вполне вероятно, что вы можете его игнорировать. например пул незанятых потоков может выглядеть так, как будто он потребляет ЦП для профилировщика (который он не использует так часто, как предполагалось) - person Peter Lawrey; 11.06.2013

VisualVM будет отслеживать все методы, вызываемые java-программой, которую она отслеживает, поэтому либо ваша программа, либо одна из ее библиотек вызывает эти методы. VisualVM также подключается к нему, поэтому могут быть небольшие артефакты.

Что касается поиска, наверное, проще всего фильтровать по своим пакетам. Внизу есть место, где вы можете ввести их, чтобы увидеть, какие из ваших собственных методов действительно требуют времени. Также вам следует обратить внимание на то, в каком потоке вы находитесь, обычно вы хотите посмотреть на то, что является вашим «основным» потоком. Другие потоки интересны, но не всегда дают лучшее представление о том, как ведет себя ваша программа.

person greedybuddha    schedule 11.06.2013
comment
+1 попробую это. У меня есть только один основной поток (по крайней мере, мой собственный) - person peter.murray.rust; 11.06.2013