[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Memory leaks and user data
- From: Javier Guerra Giraldez <javier@...>
- Date: Wed, 27 Jun 2007 16:49:54 -0500
Fabien wrote:
Hi,
I have a memory leak problem: some userdata objects are never GC'd, and
I really fail to find where it's referenced. Is there a well-known
recipe to help tracking down such leaks, if I know which userdata I'm
chasing?
one common issue with userdata is that it's hard to make the lua GC
account for it's full weight.
the worst (and still very common) case is when you use a third party
library to alloc a complex and heavy object, and create a userdata to
hold just the pointer. The Lua CG will count only 4 bytes, unaware of
the big memory hog. you can find yourself with thousands of these
objects, and the CG doesn't bother to delete them.
the usual solution is to add a 'close' method to the userdata, and
remember to close any object you don't need anymore.
of course, there's always the "but the CG _should_ do this for me!"
argument; but think about open files, or DB connections... it's obvious
they should be closed ASAP, CG or not. just the same with any
resource-hogging library.
--
Javier