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