|
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 far.
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.
Gé