Ответ 1
Чтобы перейти на ответ Джонаса, спецификация виртуальной машины Java, Раздел 4.8 Ограничения на Java Virtual Machine Code говорит, что:
Код виртуальной машины Java для метод, метод инициализации экземпляра (§3.9), или класс или интерфейс метод инициализации (§3.9) сохраняется в массиве кода кода атрибут структуры method_info файла класса. Эта секция описывает связанные с этим ограничения с содержанием Структура Code_attribute.
Продолжая раздел 4.8.1, Static Constraints
Статические ограничения для файла класса являются те, которые определяют корректность файла. За исключением статические ограничения для виртуального Java-приложения машинный код файла класса, эти ограничения были приведены в предыдущий раздел. Статический ограничения на виртуальную виртуальную машину Java машинный код в файле класса укажите как инструкции виртуальной машины Java должны быть выложены в массиве кода и какие операнды отдельных инструкции должны быть.
Статические ограничения на инструкции в массиве кода: следующим образом:
...
- Значение элемента code_length должно быть меньше 65536.
...
Таким образом, у метода есть предел в 65535 байт байт-кода для каждого метода. (см. примечание ниже)
Дополнительные ограничения для JVM см. в Раздел 4.10 Ограничения виртуальной машины Java.
Примечание. Хотя, по-видимому, проблема с конструкцией JVM, если инструкция в байте 65535 является инструкцией длиной 1 байт, она не защищена обработчиком исключений - это указано в сноске 4 раздела 4.10.