Почему некоторые библиотеки Java компилируются без отладочной информации

Самой важной функцией, без которой я не могу жить, является Visual Studio 2008.: P

19
задан Mike Q 9 December 2009 в 08:54
поделиться

2 ответа

Параметры компиляции по умолчанию не включают отладочную информацию, вы должны специально указать компилятору включить ее. Есть несколько причин, по которым большинство людей пропускают его:

  • Некоторые библиотеки используются во встроенных системах (например, в мобильных телефонах). До недавнего времени на счету был каждый бит. Сегодня большинство мобильных телефонов имеют больше памяти, чем все компьютеры в 1985 году вместе;)
  • При компиляции с активной отладкой код выполняется на 5% медленнее. Немного, но опять же, в некоторых случаях на счету каждый цикл.
  • Сегодняшние старшие разработчики родились в то время, когда 64 КБ ОЗУ были огромными. Вчера добавил к серверу в подвале еще диск на 2ТБ. Это 7 порядков за 25 лет. Людям нужно больше времени, чтобы приспособиться.

[EDIT] Как отметил Джон, байт-код Java сегодня (сильно) не оптимизирован. Таким образом, выходные данные файлов классов будут одинаковыми для обоих случаев (только файл класса с отладочной информацией будет больше). Код оптимизирован в JIT во время выполнения, что позволяет среде выполнения оптимизировать код для ЦП, памяти (количество и макет) и т. Д.

Упомянутый 5% штраф - это когда вы запускаете код и добавляете параметры командной строки чтобы позволить удаленному отладчику подключиться к процессу. Если вы не включите удаленную отладку, штраф не будет (кроме загрузки класса, но это происходит только один раз).

34
ответ дан 30 November 2019 в 03:48
поделиться

Вероятный размер установки. Информация об отладке увеличивает накладные расходы на jar-файлы, которые, вероятно, не нравятся Sun.

Мне недавно пришлось исследовать проблему Java Web Start - информация об отладке недоступна - поэтому добавление полной трассировки в консоль java и загрузка исходного кода помогли некоторые, но код довольно запутанный, поэтому мне просто нужна отладочная сборка.

JDK должен быть скомпилирован с ПОЛНОЙ отладочной информацией везде!

0
ответ дан 30 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: