lua-users home
lua-l archive

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

On Fri, 23 Sep 2011, Michael Gerbracht wrote:

If I put everything into one table and try the same:

TableMain = {}
TableMain.A = {<many entries>}
TableMain.B = {<many entries>}
TableMain.C = {<many entries>}

TableMain.B = nil

then the memory is not garbage collected by lua. I hope this is correct so

No it's not. You created a nested table, and the 'inner' table that TableMain.B refers to will be collected sometime after you assign 'nil' to TableMain.B, because there is no way to get to that table anymore. And that's exactly the criterion used be the garbage collector to decide whether the table can be removed.

Your examples use essentially the same amount of memory. You have three large tables, and a 3-entry one referred to by TableMain. The difference in memory use of all your examples is just a few table slots.