Компиляция в байт-код Java не оптимизирует (за исключением нескольких исключений).
Во многих книгах для упрощения говорится, что фаза «компиляции» - это когда происходит оптимизация, но это неправильно. Когда действительно происходит оптимизация, файлы байт-кода обрабатываются JVM. Так что для очистки: оптимизация может произойти во время компиляции байт-кода в машинный собственный код, что делается инструментами JVM.
Иногда оптимизация вообще отсутствует (JVM работает в режиме интерпретации). Иногда есть некоторая оптимизация, сделанная JIT (компилятор Just In Time). А иногда адаптивный оптимизатор заботится об оптимизации (не только оптимизации, но и профилировании выполнения кода в случае выполнения дополнительных операций).
Итак, наконец, в вашем файле нет ничего плохого. Так устроен мир Java.
"Но почему?" - спросите вы. Причина сохранения этой «бесполезной» информации в байт-коде заключается в том, что вы никогда не будете уверены, сколько кода вы можете удалить, чтобы оптимизация, обеспечиваемая другой JVM, могла все еще работать эффективно. Лучший способ - просто не стереть информацию и позволить оптимизаторам выполнять свою работу.