Почему Java ограничивает размер метода до 65535 байт?

Я только что скомпилировал следующий код

public class A { public static void main(String... args) { int i = 3; ++i; ++i; ++i; ++i; ++i; ++i; ++i; ++i; // repeat writing the expression ++i for 20,000 times System.out.println(i); } } 

И получил следующее сообщение об ошибке

Код метода main (String …) превышает предел 65535 байт

Почему Java реализует этот предел? Я не вижу рационального, так как Java включает инструкцию goto_w.

См. Раздел « Спецификация виртуальной машины Java», раздел 4.10:

4.10. Ограничения виртуальной машины Java

  • Количество кода для неместного, не абстрактного метода ограничено 65536 байтами размерами индексов в таблице exception_table атрибута Code (§4.7.3) в атрибуте LineNumberTable (§4.7.8) и в атрибуте LocalVariableTable (§4.7.9).

Существует несколько веских причин иметь метод, который долгое время носит объектно-ориентированный язык программирования.

  • Предотвратить показ веб-страницы «веб-страница недоступна»
  • android.app.Application нельзя использовать для android.app.Activity
  • Зачем использовать абстрактный class без абстрактных методов?
  • Не удалось запустить sdkmanager --list (Android SDK) с Java 9
  • Максимальный размер метода в java?
  • Как я могу представить диапазон в Java?
  • Можно ли объявить переменную в Gradle, используемой в Java?
  • Невозможно создать обработчик внутри streamа, который не вызвал Looper.prepare () внутри AsyncTask для ProgressDialog
  • Как избежать избыточности кода конструктора в Java?
  • Расчет пересечений между сегментами линии
  • можно ли отключить клавиши Windows с помощью java
  • Interesting Posts

    SpannableStringBuilder для создания String с несколькими шрифтами / размерами текста и т. Д. Пример?

    Какие псевдооператоры существуют в Perl 5?

    Почему файлы .doc, созданные Word для Mac 2016, настолько большие?

    Запуск xcodebuild с разветвленного терминала

    Ошибка входа в веб-приложение для пользователя «NT AUTHORITY \ ANONYMOUS LOGON»

    Загрузка установки Windows 7 на другое оборудование

    После включения raid0 синий экран смерти

    Hibernate – зачем использовать «много-к-одному» для представления «один к одному»?

    Как подождать несколько фьючерсов

    Захватить снимок экрана активного windows?

    Как устранить асимметричную скорость PPTP VPN? (Нисходящая линия к клиенту медленная, пропускная способность сервера и отсутствие накладных расходов на шифрование)

    Что произойдет, если мы уменьшим размер hiberfil.sys

    Как преобразовать строку JSON в словарь?

    Кодировщик и декодер Base64

    Windows 7 никогда не запоминает мои учетные данные

    Давайте будем гением компьютера.