Подтвердить что ты не робот

Максимальные строки кода, разрешенные в классе Java?

Сколько строк кода может содержать файл .java? Это зависит от используемой JVM?

4b9b3361

Ответ 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.

Ответ 2

Я считаю, что ограничение на размер байт-кода на один метод ограничено на 64 КБ.

Ответ 3

Нет ограничений на "строки кода", но существует ограничение на общий размер. Каждый метод имеет ограничение 64 КБ.

Я только сталкивался с этим с помощью инструментов генерации кода.

Если вы приближаетесь к пределу, будьте осторожны. Многие инструменты профилирования и мониторинга используют байтовую вставку кода. Они могут подтолкнуть вас сверху, если вы слишком близко. Что еще хуже, они часто меняют ваши файлы классов после компиляции. Все компилируется и запускается в среде разработки, но сбой при включении ваших средств мониторинга в Test или QA.

Ответ 4

Я помню, как на самом деле работал в этом лимите один раз на сложной странице JSP в Tomcat 4 (ранее в прошлом, когда люди все еще пользовались JSP). У java файла, созданного с помощью JSP, был метод, который был слишком большим для компиляции, я думаю, что мне пришлось разделить файл или сделать какой-то другой трюк, который, конечно же, был хорошей идеей с точки зрения удобочитаемости.

Отслеживание ошибок Sun говорит мне, что некоторые люди все еще имеют одинаковую проблему.