I’m having one hell of a time trying to find and stop a memory leak in a
ruby daemon. It starts off using a tiny 14 MB of RAM, and 150+MB after a
day. I’ve read through many forum and blog posts, and tried several
profilers. I don’t see anything unusual.
I even tried this guy
That showed my overall object count going up and down as normal, but
memory was not being released as objects came and went.
I’ve gone through my code made sure I’m squashing any unused objects.
Well…I set them to nil, I just guessed that would help. I’m also
calling .clear on any arrays and hashes. I noticed this helps with
garbage collection. I also added a thread that runs does nothing but
sleep and run garbage collection every 5 minutes, although I’m pretty
sure this isn’t helping much.
All I’ve managed to greatly slow the memory leak. Before the daemon
would consume 100+ MB in a few hours.
There are two things my daemon makes heavy use of that is out of
control, hpricot and dbi (talking to ms sql server). I suspect one or
both of these guys may be my problem. I’ll write into both projects for
advice, but is there anything else I can do so ruby will let go of