Память таблицы Lua?

Это может показаться странным вопросом, но любопытство взяло верх, когда я получил ошибку памяти после заполнения таблицы более чем 14 миллионами элементов.

Есть ли какой-то установленный лимит памяти для таблиц Lua или он вообще какой-то динамический? Я полагал, что Lua сам выделит так много памяти в целом, и ошибка будет выдана, когда она закончится, но это всего лишь дикое предположение. Кто-нибудь знает наверняка? Спасибо.


person Stephen Leitnick    schedule 10.07.2013    source источник
comment
У меня нет исходников, но насколько я знаю, Lua возьмет столько памяти, сколько ему нужно и сможет получить. Однако распределение таблицы массивов равно степени 2, поэтому на самом деле у вас была таблица массивов с 14 миллионами элементов, на самом деле она была длиной 2 ^ 24.   -  person dualed    schedule 11.07.2013
comment
Источник: lua.org/gems/sample.pdf стр. 19   -  person dualed    schedule 11.07.2013
comment
Какое сообщение об ошибке вы получили?   -  person lhf    schedule 11.07.2013


Ответы (1)


t={}
for i=1,176000000 do t[#t+1]=i end

Пробовал с 64-битным двоичным файлом lua для Windows - отлично работает.

большое состояние lua

Сбой 64-битного бинарного файла luajit. Похоже на баг луаджита.

person Dmitry Ledentsov    schedule 11.07.2013
comment
после 4 ГБ бит lua64 перестал изящно увеличивать таблицу с сообщением not enough memory - person Dmitry Ledentsov; 11.07.2013
comment
вот ссылка на то, что таблицы lua имеют ограничение в 4 ГБ памяти. В источнике: max size of array part is 2^MAXBITS - person Dmitry Ledentsov; 11.07.2013