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

Я узнал, что максимальный размер метода в Java составляет 64 КБ. И если оно превысит, мы получим предупреждение компилятора типа "Код слишком велик для компиляции". Так что мы можем назвать это недостатком Java с таким небольшим количеством памяти.

Можем ли мы увеличить этот предел размера или это действительно возможно увеличить?

Есть еще идеи относительно размера этого метода?

3 ответа

Решение

По моему опыту, ограничение в 64 КБ является проблемой только для сгенерированного кода. особенно при инициализации больших массивов (что делается в коде)

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

РЕДАКТИРОВАТЬ:

Ничего не стоит, что JIT не будет компилировать методы размером более 8 K. Это означает, что код работает медленнее и может влиять на время GC (поскольку менее эффективен поиск в стеке вызовов потока с помощью методов, которые не компилируются esp большие)

Если возможно, вы хотите ограничить свои методы до 8 K, а не до 64 K.

64k - это много, если вы превысите его, вы можете подумать о реорганизации своего кода.

В моем проекте я встречал это ограничение однажды в сгенерированных источниках. Решается, просто разделив один метод на несколько.

Если ваш метод длиннее 50 строк, включая внутренние комментарии, разделите его. В этом случае вы никогда не достигнете какого-либо ограничения (даже если оно существует).

Я лично видел методы длиной в 1000 строк (написанные преступниками, которые называют себя программистами:)), но не видел такого ограничения.

Другие вопросы по тегам