Компилятор javac
от Sun имеет концепцию отладочной информации, которая (необязательно) может быть исключена из выходных данных скомпилированного класса.
Посмотрите документацию и проверьте параметры флага -g
:
-g
Generate all debugging information, including local
variables. By default, only line number and source
file information is generated.
-g:none
Do not generate any debugging information.
-g:{keyword list}
Generate only some kinds of debugging information,
specified by a comma separated list of keywords.
Valid keywords are:
source
Source file debugging information
lines
Line number debugging information
vars
Local variable debugging information
Возможно, они не настолько обширны, как оптимизация байт-кода, которую могут выполнять компиляторы .NET (с которыми я не знаком, извините), ноЯ думаю, что в теории они существуют по соображениям производительности (меньшие файлы классов и т. Д.).
На практике я сильно подозреваю, что они не будут иметь большого значения для производительности во время выполнения на современном оборудовании + JVM, но они есть.