你好,
我不知道如何在哈希表中删除键后释放内存。当我从哈希表中删除键时,即使手动调用
示例:
GC.start
,内存也不会被释放。这是预期的行为吗?还是当从哈希表中删除键并且这些对象泄漏到其他地方时,GC不会释放内存?我该如何在Ruby中删除哈希表中的键并在内存中取消分配它们?示例:
irb(main):001:0> `ps -o rss= -p #{Process.pid}`.to_i
=> 4748
irb(main):002:0> a = {}
=> {}
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:我使用的是ruby 1.8.7版本。我也尝试过ruby 1.9.2,但效果并不好。