Я запускаю VisualVM для профилирования простого Java-приложения. Когда я дважды нажимаю на методе в панели профилирования (надеясь получить более подробную информацию об этом), тогда он говорит "Нет источника, найденного для класса...". Я знаю, где источник. Как я могу показать VisualVM, где искать?
Как указать visualvm, где найти исходный код?
Ответ 1
Я взял дамп стека процесса VisualVM, пока он отображал этот диалог ошибок, и кажется, что проблема заключается в классе org.netbeans.modules.profiler.api. GoToSource, в методе openSourceImpl
.
Этот метод пытается загрузить источник с помощью любых зарегистрированных реализаций интерфейса поставщика услуг GoToSourceProvider
и отображает сообщение об ошибке, если никому из них не удается отобразить исходный код, о котором идет речь.
Я предполагаю, что текущая версия VisualVM по умолчанию не имеет зарегистрированного GoToSourceProviders
и поэтому всегда будет не в состоянии искать исходный код.
Из имени пакета появляется, что GoToSourceProvider
- это SPI для модуля профилирования, но я не смог найти документацию о том, как реализовать этот SPI, и он, похоже, не является частью VisualVM точки расширения.
Ответ 2
Привет, что-то такое же, как VisualVM, реализовано в среде IDE NetBeans (я использую 8.0.2). Просто нажмите Profile->Project Profile
. Показывается исходный код при нажатии. Но, к сожалению, нет более подробной информации о том, какие строки кода занимают больше времени.
Для этого я буду изменять код, и я буду считать вручную, используя
long beg = System.nanoTime()
lineISuspect
sum += System.nanoTime() - beg;