Does anyone understand garbage collection well enough to provide me some 
pointers on how to make better use of memory, especially when using 
Marshal.dump/load?

Here are some specifics on what I am trying to do:

I am writing a btree in ruby.  I store the elements of a page in the btree 
in an array and Marshal.dump/Marshal.load the array (page) to and from 
disk.  There are many arrays/pages in then btree.  There is one array per 
page.  A page is approximately 1K.  It works great with one exception, the 
process continuously consumes memory.  It consumes memory at a rate of 
almost 1 Meg a second when inserting a lot of rows.  Running GC.start after 
the inserts are completed does not appear to free any memory.  All memory 
is recovered when the process is stopped.  I tried to make sure I set all 
unused variables to nil when they are no longer needed.  I also tried 
setting variables to nil before assigning then new values.  This did not 
help.

Thanks in advance, Michael