Снизится ли производительность, если вы запустите процесс Java с включенной удаленной отладкой через jdwp/socket и никакой внешний процесс не подключается? Я понимаю, что есть значительный удар, когда удаленный клиент фактически отлаживает, но если я просто объявлю jdwp для определенного порта, это само по себе замедлит работу приложения? Будем признательны за любые ссылки на документацию.
Удаленная отладка Java - производительность
Ответы (1)
Нет, простое включение порта отладки не повлияет на производительность среды выполнения, пока не подключится внешний процесс.
JDWP — это протокол, используемый для связи между отладчиком и виртуальной машиной Java (VM), которую он отлаживает. JDWP является необязательным.
Запуск JDWP. После установления транспортного соединения и до отправки каких-либо пакетов между двумя сторонами соединения происходит рукопожатие:
Процесс рукопожатия состоит из следующих шагов:
- Сторона отладчика отправляет на сторону ВМ 14 байтов, состоящих из 14 символов ASCII строки «JDWP-Handshake».
- Сторона виртуальной машины отвечает теми же 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