lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


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