2013-07-10 6 views
4

이것은 일종의 이상한 질문 일지 모르지만, 1,400 만 개 이상의 아이템으로 테이블을 채운 후에 메모리 오류가 발생했을 때 호기심이 내게 최고라고 생각합니다.루아 테이블 메모리?

Lua 테이블에 대해 일종의 메모리 제한이 설정되어 있습니까? 아니면 전혀 동적입니까? 나는 루아 그 자체가 너무 많은 메모리를 할당 할 것이라고 생각했다. 그리고 그 에러가 발생했을 때 에러가 발생했을 것이다. 그러나 그것은 단지 야생의 추측 일 뿐이다. 누구나 확실히 압니까? 감사.

+1

나는 근원이 없지만, 내가 아는 한, 루아는 필요에 따라 많은 양의 기억을 취할 수있다. 그러나 배열 테이블 할당은 2의 제곱이므로 배열 테이블에 실제로 1400 개의 항목이 있습니다. 실제 길이는 2^24입니다. – dualed

+0

출처 : http://www.lua.org/gems/sample.pdf page 19 – dualed

+0

어떤 오류 메시지가 나타 났습니까? – lhf

답변

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

Windows 64 비트 바이너리로 시도해 보았습니다. 정상적으로 작동합니다.

a large lua state

64 비트 이진 luajit 추락. luajit의 버그처럼 보입니다.

+0

4GB lua64 비트가 '메모리가 충분하지 않습니다.'라는 메시지로 정상적으로 테이블을 확장하는 것을 멈춘 후 –

+2

[여기] (https://github.com/neomantra/lds)의 루아 테이블은 4GB 메모리 제한을받습니다. [source] (http://www.lua.org/source/5.1/ltable.c.html) :'배열 부분의 최대 크기는 2^MAXBITS'입니다. –