K
khaines
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
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