powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Максимальный размер метода
12 сообщений из 12, страница 1 из 1
Максимальный размер метода
    #38037262
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На основании

http://eblog.chrononsystems.com/method-size-limit-in-java

Most people don’t know this, but you cannot have methods of unlimited size in Java.

Java has a 64k limit on the size of methods.

Кто ловил подобную (java.lang.VerifyError) ошибку?

Где-то в спецификациях есть описание этого ограничения?
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037272
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

сталкивался с похожим ограничением на Андроиде. Один dex-файл не может содержать более 64К методов.
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037283
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал со статических векторов. Массив byte[] в 10К уже не хочет собираться в бинарник.

Код: java
1.
2.
3.
4.
public class byteStorage{

public final static byte[] vecbyte={......}
}



Код: java
1.
2.
3.
4.
>javac byteStorage.java
byteStorage.java:4: code too large
public final static byte[] vecbyte={
                           ^



Забавно что он и хранится не в исходном виде а в виде текста конструктора который
инициализирует стековую память.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
static {};
  Code:
   0:	sipush	8000
   3:	newarray byte
   5:	dup
   6:	iconst_0
   7:	bipush	19
   9:	bastore
   10:	dup
   11:	iconst_1
   12:	bipush	18
   14:	bastore
   15:	dup
   16:	iconst_2
   17:	iconst_0
   18:	bastore
   19:	dup
   20:	iconst_3
   21:	iconst_3
   22:	bastore
   23:	dup
   24:	iconst_4
   25:	iconst_2
   26:	bastore
   27:	dup



Оверхед по памяти конечно нехороший. Если посмотреть на байткод инициализации то
примерно на каждый инициализированный байт приходися 6 байт директив Java-machine
в том числе offset.

Чуть позже попробую строками. Может оно и экономнее выйдет.
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037353
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonГде-то в спецификациях есть описание этого ограничения?

Есть, конечно. Это вам не С, где реализации имеют право устанавливать свои ограничения.

The value of the code_length item must be less than 65536.

http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.9.1
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037356
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Строками конечно экономнее, так как на них код не тратится.

Еще вариант - записать в файл, файл поместить рядом с классами и загружать через класслоадер.
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037370
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton...Массив byte[] в 10К уже не хочет собираться в бинарник

Код: java
1.
2.
3.
4.
public class byteStorage{

public final static byte[] vecbyte={......}
}




Вашему терпению можно только позавидовать, написать 10000 элементов массива!!!! Да!!!!
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037478
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDmayton...Массив byte[] в 10К уже не хочет собираться в бинарник

Код: java
1.
2.
3.
4.
public class byteStorage{

public final static byte[] vecbyte={......}
}




Вашему терпению можно только позавидовать, написать 10000 элементов массива!!!! Да!!!!

а чего такого? Не руками же их туда пишут. В WinHex например можно из файла генерировать массив в такой форме для синтаксиса некоторых языков. Иногда бывает удобно.
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037505
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHTOH_Lа чего такого? Не руками же их туда пишут. В WinHex например можно из файла генерировать массив в такой форме для синтаксиса некоторых языков. Иногда бывает удобно.


Ступил, об этом не подумал, да что там WinHex, antlr, который использую, также хранит имена токенов.
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037596
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: java
1.
javac byteStorage.java

а если ecj попробовать?
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037835
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netmayton
Код: java
1.
javac byteStorage.java

а если ecj попробовать?
Меня не интересовали другие компилляторы. Вопрос лежал
в спецификации.
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38037839
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDВашему терпению можно только позавидовать, написать 10000 элементов массива!!!! Да!!!!
Пффф. Скажешь такое.
...
Рейтинг: 0 / 0
Максимальный размер метода
    #38038225
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytongrasoff.netпропущено...
а если ecj попробовать?
Меня не интересовали другие компилляторы. Вопрос лежал
в спецификации.ну, 10к это не 65к )
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Максимальный размер метода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]