Удаленная отладка Java - производительность

Снизится ли производительность, если вы запустите процесс Java с включенной удаленной отладкой через jdwp/socket и никакой внешний процесс не подключается? Я понимаю, что есть значительный удар, когда удаленный клиент фактически отлаживает, но если я просто объявлю jdwp для определенного порта, это само по себе замедлит работу приложения? Будем признательны за любые ссылки на документацию.


person Bober02    schedule 13.09.2016    source источник


Ответы (1)


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

JDWP — это протокол, используемый для связи между отладчиком и виртуальной машиной Java (VM), которую он отлаживает. JDWP является необязательным.

Запуск JDWP. После установления транспортного соединения и до отправки каких-либо пакетов между двумя сторонами соединения происходит рукопожатие:

Процесс рукопожатия состоит из следующих шагов:

  1. Сторона отладчика отправляет на сторону ВМ 14 байтов, состоящих из 14 символов ASCII строки «JDWP-Handshake».
  2. Сторона виртуальной машины отвечает теми же 14 байтами: JDWP-Handshake.

В Java SE 1.4 виртуальная машина Java HotSpot теперь использует «полную отладку».

В предыдущей версии HotSpot при включенной отладке программа выполнялась с использованием только интерпретатора. Теперь все преимущества технологии HotSpot в производительности доступны для программ, работающих с включенной отладкой. Улучшенная производительность упрощает отладку долго выполняющихся программ. Это также позволяет проводить тестирование на полной скорости и запускать отладчик по исключению:

Дополнительные сведения об улучшениях JDWP см. на странице http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html

person Rohit Gaikwad    schedule 13.09.2016