2013-06-11 1 views
3

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

enter image description here

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

enter image description here

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

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

ответ

7

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

+0

+1 Я в конце концов нашел свой путь здесь! –

3

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

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

+1

+1 предположительно два упомянутых мной относятся к RMI –

+0

Скорее всего. Если пул потоков нет, все равно, вероятно, вы можете его игнорировать. например возможно, что пул потоков в режиме ожидания выглядит так, как будто он потребляет процессор для профилировщика (который не использует столько, сколько предлагается) –

1

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

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

+0

+1 попробует это. У меня есть только один основной поток (по крайней мере, мой собственный) –