Максимально допустимое количество строк кода в классе Java? - PullRequest
21 голосов
/ 20 сентября 2008

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

Ответы [ 5 ]

33 голосов
/ 20 сентября 2008

Чтобы расширить на ответ Джонаса , Спецификация виртуальной машины Java, Раздел 4.8 Ограничения на код виртуальной машины Java говорит, что:

Код виртуальной машины Java для метод, метод инициализации экземпляра (§3.9), или класс или интерфейс метод инициализации (§3.9) сохраняется в кодовом массиве кода атрибут структуры method_info файла класса. Эта секция описывает связанные ограничения с содержанием Структура Code_attribute.

Продолжение раздела 4.8.1, Статические ограничения

Статические ограничения на файл класса те, которые определяют правильность файла. За исключением статические ограничения на виртуальной Java машинный код файла класса, эти ограничения были даны в предыдущий раздел. Статический ограничения на виртуальной Java машинный код в файле класса укажите как инструкции виртуальной машины Java должен быть выложен в массиве кода и какие операнды индивида инструкции должны быть.

Статические ограничения на инструкции в массиве кода как следующим образом:

...

  • Значение элемента code_length должно быть меньше 65536.

...

Таким образом, метод имеет ограничение в 65535 байт для каждого метода. (см. примечание ниже)

Подробнее об ограничениях JVM см. Раздел 4.10 Ограничения виртуальной машины Java .

Примечание. Хотя, очевидно, существует проблема с конструкцией JVM, когда инструкция в байте 65535 - это команда длиной 1 байт, но она не защищена обработчиком исключений - это указано в сноске 4 раздела 4,10.

8 голосов
/ 20 сентября 2008

Я считаю, что для байтового кода на метод существует ограничение в 64 КБ.

5 голосов
/ 20 сентября 2008

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

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

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

4 голосов
/ 20 сентября 2008

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

Система отслеживания ошибок Sun сообщает, что у некоторых людей все еще есть та же проблема .

3 голосов
/ 07 февраля 2018

Как упомянуто выше, нет никаких ограничений на «строки кода» на класс в java, мы, вероятно, можем использовать 200 строк в качестве хорошего ориентира и не превышать 500 строк на класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...