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