Профилировать выполнение всей программы Java в VisualVM

В профилировании Java кажется, что все (бесплатные) дороги в настоящее время ведут к профилировщику VisualVM, включенному в JDK6. Похоже, отличная программа, и все рекламируют, как вы можете "прикрепить ее к работающему процессу" как главную особенность. Проблема в том, что это единственный способ использовать ее в локальном процессе. Я хочу чтобы иметь возможность запускать мою программу в профилировщике и отслеживать ее полное выполнение .

Я пробовал использовать параметр -Xrunjdwp , описанный в ] как профилировать запуск приложения с помощью visualvm , но между двумя методами транспорта (разделяемой памятью и сервером) ни один из них не полезен для меня. VisualVM, похоже, не имеет интеграции с первым, а VisualVM отказывается подключаться к localhost или 127.0.0.1 , так что последнее тоже не годится. Я также попытался вставить простое чтение System.in в мою программу, чтобы вставить паузу в выполнение, но в этом случае VisualVM блокируется до завершения чтения и не позволяет вам начать профилирование до тех пор, пока выполнение не начнется. Я также попытался изучить плагин Eclipse , но на сайте полно мертвых ссылок, и программа запуска просто вылетает с NullPointerException , когда я пытаюсь его использовать ( это может быть уже неточно).

Исходя из C, это не кажется мне особенно сложной задачей. Я что-то упустил или это действительно невыполнимая просьба? Я открыт для любых предложений, включая использование другого (также бесплатного) профилировщика, и я не прочь использовать командную строку.

32
задан Community 23 May 2017 в 12:33
поделиться