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