Подтвердить что ты не робот

Будет ли Java-приложение замедляться присутствием -Xdebug или только при переходе через код?

Я понимаю, что код Java будет замедлить при запуске в отладчике.

Вопрос в том, будет ли код замедляться, просто запустив Java с этими параметрами:

Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n

??

Или происходит ли замедление только при подключении к "порту отладки" и фактическому прохождению кода с помощью среды IDE?

4b9b3361

Ответ 1

Во-первых, чтобы строго ответить на ваш вопрос - по крайней мере, как указано в его заголовке - -Xdebug включает поддержку отладки только в виртуальной машине с использованием JVMDI в JVM до 5.0. Так что само по себе это мало что дает. Более того, JVMDI устарела с 5.0 в пользу JVMTI:

- Xdebug
Начните с поддержкой JVMDI. JVMDI устарел и не используется для отладки в J2SE 5.0, поэтому этот параметр не требуется для отладки в J2SE 5.0.

Так что -Xdebug больше ничего не делает, и важная часть:

-Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...

или, начиная с Java 5.0, более новый (который вы предпочитаете, поскольку агент JDWP в 5.0 использует интерфейс TI JVM с виртуальной машиной, а не более старый интерфейс JVMDI):

--agentlib:jdwp=<name1>[=<value1>],<name2>[=<value2>]...

Теперь, насколько мне известно, простая загрузка агента jwdp и/или настройка JVM для прослушивания соединения с сокетом на заданном порту не оказывает заметного влияния на производительность. Но подключение отладчика делает.

Ответ 2

Результаты тестирования производительности в AMD показывают, что простое включение агента отладки через командную строку JVM приводит к снижению производительности независимо от того, подключен ли к нему отладчик, и что снижение может быть довольно большим в зависимости от рабочей нагрузки:

Обратите внимание, что мы фактически не подключали отладчик, когда измеряли производительность, поэтому мы предполагали, что эта опция agentlib будет не зависеть от производительности в этом сценарии использования. Когда мы удалили эту опцию, загрузка ЦП и производительность этой рабочей нагрузки (измеряемой в запросах в секунду) значительно улучшились.

Смотрите их отчет:

http://developer.amd.com/resources/documentation-articles/articles-whitepapers/java-performance-when-debugging-is-enabled/

Выше ссылка не работает, вот ссылка на ее веб-архив: https://web.archive.org/web/20160316201129/http://developer.amd.com/resources/documentation-articles/articles-whitepapers/java-performance -когда-отладка-это-включен/

Ответ 3

Нет, просто включение отладочного порта не повлияет на производительность выполнения. По крайней мере, я никогда не замечал.

..