jvisualvm не исключает некоторые методы из профилирования процессора - PullRequest
2 голосов
/ 25 августа 2011

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

Когда я запускаю свое приложение и присоединяю jvisualvm, я настраиваю фильтр на странице профилирования ЦП («Профилирование Sart из классов» и «Не профилируйте классы "), так как меня не интересует все, что связано с доступом к базе данных, и другие вещи, связанные с вводом / выводом.

Фильтр работает - почти.Моя проблема в том, что профилировщик сообщает, что большую часть времени проводит в sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(), хотя sun. * Вводится в фильтр «Не профилировать классы».Это единственный метод на солнце. * Появляется в моих результатах профилирования.

Кто-нибудь видел это раньше и знает, как от него избавиться?Проблема в том, что все остальные методы отображаются только с небольшими значениями (<1%) в столбце «Self Time», большинство отображается с 0%. </p>

Используемая версия jvisualvm - 1.3.2.

Заранее спасибо, Аксель

Ответы [ 2 ]

1 голос
/ 25 августа 2011

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

  • заглушить базу данных, чтобы она быстро возвращалась (таким образом, оставшаяся часть кода занимала большую часть времени), либо
  • используйте лучший профилировщик, такой как YourKit или JProfiler (платный, обязательно поддерживайте то, что вы хотите) или TPTP (бесплатный, но я не уверен, насколько мощным он у нас)
0 голосов
/ 03 сентября 2011

Снимите флажок «Профилировать новые Runnables» на странице профилирования процессора. Чтобы ответить на другой вопрос с помощью «Self Time» - вам нужно сделать снимок процессора профилированных данных. Снимок содержит общую информацию о времени метода.

...