ruby hash memory leak after key deletion -


helo, can't succeed how release memory after key deletion in hash. when delete key hash, memory not released nor after calling gc.start manually. expected behavior or gc not release memory when keys deleted hash , these objects leaking somewhere? how can delete key in hash in ruby , unallocate in memory?

example:

irb(main):001:0> `ps -o rss= -p #{process.pid}`.to_i => 4748 irb(main):002:0> = {} => {} irb(main):003:0> 1000000.times{|i| a[i] = "test #{i}"} => 1000000 irb(main):004:0> `ps -o rss= -p #{process.pid}`.to_i => 140340 irb(main):005:0> 1000000.times{|i| a.delete(i)} => 1000000 irb(main):006:0> `ps -o rss= -p #{process.pid}`.to_i => 140364 irb(main):007:0> gc.start => nil irb(main):008:0> `ps -o rss= -p #{process.pid}`.to_i => 127076 

ps: use ruby 1.8.7. i've tried ruby 1.9.2, not better.

see stackoverflow: how malloc , free work

for variety of reasons (spelled out in citation above) virtually no memory manager releases memory operating system.

for see process change, underlying malloc , free in c part of ruby interpreter need give host os memory. that's not going happen, @ ruby level, objects have been gc'ed , in locally kept free list in interpreter.


Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -