On 8/28/06, khaines / enigo.com <khaines / enigo.com> wrote:
> Make a hash:
>
> h = {'a' => 1, 'b' => 2, 'c' => 3}
>
> And make another out of it:
>
> Hash[h]
>
> Do that a lot.  Watch RAM vanish.  GC cleans up the objects out of object
> space just fine, but RAM trickles away nonetheless.
>
> Here is a test program:
>
> loop do
>    attrs = Hash['this','that','the other','enough','stuff','for six']
>    Hash[attrs]
> end
>
> I have tested it on an installation of RedHat Enterprise Linux with 1.8.1,
> 1.8.2, 1.8.4, and 1.8.5 and also under 1.8.4 (one click installer) on
> WinXP Home.
>
> I've ran it under valgrind and just straight, and have inserted code to
> run GC after each loop iteration.  The behavior is consistent.  If you
> eliminate the Hash[attrs] line, there is no leak.
>
>
> Kirk Haines
>
>

Wow...that seems to be a pretty major leak to have made it this long
w/o being noticed.  Maybe that type of behavior isn't repeated often
enough in most programs to expose the leak?

- rob
-- 
http://www.robsanheim.com
http://www.seekingalpha.com
http://www.ajaxian.com