|
On 1-Dec-06, at 11:16 PM, Diego Nehab wrote:
Hi, I don't claim to understand what is going on with the new garbage collector. :) What I want to know is if there is a simple way to cause the garbage collector notice the difference between a simple boxed pointer, and a boxed pointer that represents a big chunk of memory. Creating a bunch of small userdata with no references to them is fine, as long as there is not a lot of external memory associated to them. In the later case, it would be nice if the GC could be made more reactive.
I guess the hackish way to do that would be to invade the userdata object once it's been created and add to its size the amount of memory actually being used. You'd have to update Lua's record of how much memory has been allocated by the amount you added.
Although seriously impolite to the internals of Lua, that should be safe provided you never refer to lua_objlen of the userdata or replace the standard memory allocation function with something that actually uses the allocation length.
It would be interesting to know if that actually makes a difference to program behaviour, anyway.