как вы профилируете исходный код Java с помощью редактора идей intellij? [закрыто]


83

Я знаю, что Netbeans имеет что-то вроде «интегрированного» профилировщика, например, вы можете запускать модульные тесты и использовать его для анализа и определения того, что их замедляет, где есть узкие места. Можно ли профилировать код в редакторе IntelliJ IDEA?


1
Насколько мне известно, существует только одна бесплатная интеграция профилировщика: VisualVM .
CrazyCoder

По-видимому, есть несвободный плагин JProfiler, FWIW stackoverflow.com/a/21156875/32453
rogerdpack

Сегодня я установил плагин VisualVM в INtellij IDEA ... сначала я столкнулся с какой-то проблемой, но когда я выполнил инструкции, представленные в blog.idrsolutions.com/2013/05/…, я смог легко настроить visualVM
Ширишкумар Бари

2
Еще один вопрос, который слишком практичен и полезен, чтобы оставаться открытым. SO должен поддерживать вопросы с наборами ответов {N} , где достаточно хорошо результат (ы) из набора: [ X, Y, Z] подъем к вершине через сообщества , а остальные исчезают / требуют дополнительных действий за счет естественного спада. Опять же через сообщество. «Вы действительно хотите ответить на этот вопрос? Потому что за ответ уже проголосовали довольно хорошо?» «Да, потому что теперь есть лучший ответ». Я имею в виду, что этого никогда не происходит в программном обеспечении, верно?
P.Brian.Mackey

1
К вашему сведению: в IntelliJ IDEA v2018.3 Ultimate edition профилировщик JVM доступен в качестве экспериментальной функции. См. Blog.jetbrains.com/idea/2018/09/…
chipiik

Ответы:


55

Вы можете попробовать бесплатную интеграцию профилировщика VisualVM через подключаемый модуль .


Похоже, что если вы покупаете IntelliJ "ultimate", говорят, что он также включает встроенный агент профилирования YourKit. Не бесплатно, но в комплекте, так что я думаю, это связано с моим первоначальным вопросом :)
rogerdpack

4
Нет, агент YourKit позволит вам сделать снимок ЦП / памяти при обращении в службу поддержки с проблемами производительности, а не сам профилировщик, который будет стоить вам дополнительных 500 долларов.
CrazyCoder

1
@rogerdpack, почему бы просто не открыть VisualVM (он уже установлен через jdk), выбрать свое приложение и нажать профиль?
Matsemann

3
Проблема с VisualVM, запускаемая плагином Krasa VisualVM Launcher: 1) на момент запуска ваш тест завершен. 2) профилирование «на лету» создает «горячие точки» и затрудняет чтение статистики процессора. В VisualVM есть флажок «редактировать конфигурацию», но я не понимаю, как попросить плагин запустить тест правильно - подождите, пока VisualVM не запустится и не будет готов - загрузить конфигурацию профилирования для конкретного теста в VisualVM - запустить тестовый код
улыбка

1
@ smile-on Вы нашли решение проблемы, когда ваши тесты заканчиваются до запуска VisualVM? У меня такая же проблема.
Стивен Мерби

27

Как указал Стивен Мерби, «проблема заключается в том, что ваши тесты заканчиваются до запуска VisualVM».

Да, этот плагин VisualVMLauncher не приостанавливает выполнение вашего тестового примера до запуска VisualVM. Вам также может потребоваться время, чтобы вручную изменить настройки профилирования для данного теста. Решение простое: ваш тестовый пример должен остановиться и подождать, пока вы вручную не скажете ему продолжить. Есть несколько способов сделать это:

1) поставить System.in.read (); в качестве первой строки тестового примера и когда VisualVM готов, нажмите Enter на консоли.

System.in.read();

2) Если средство запуска тестового примера не предоставляет вам консоль, поставьте подождите, пока не будет создан какой-нибудь волшебный файл.

3) вы всегда можете легко играть со сном ()

sleep(5 seconds);

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.