|
Roberto Ierusalimschy wrote:
IIRC the number of cycles necessary depends on the depth of the data to collect. For example t={} t=nil will require one cycle, while t = { t = { t = { t = { t = { t = {} } } } } } will require 6 cycles.
Thanks Jerome, Roberto.
Probably what is happening in that program is this: when Lua reads that huge string, an internal buffer grows to accomodate that string. After that, it takes some collections for the buffer to resize to a reasonable size again.
That would be the luaL_Buffer used in read_chars (@liolib.c), right?I thought that since that structure is in C it wouldn't affect Lua's memory use (i.e, it would release its memory right away once it goes out of scope), but I see it uses the stack.
So, I'd have to take care of issuing enough collectgarbage's after reading large files or calling table.concat, right?
Regards, Ignacio