小编Ada*_*ent的帖子

密钥删除后ruby哈希内存泄漏

Helo,我无法成功在哈希中删除键后如何释放内存.当我从Hash中删除密钥时,内存不会被释放,也不会在GC.start手动调用之后.当从Hash中删除密钥并且这些对象在某处泄漏时,这种预期行为或GC是否不释放内存?如何删除Ruby中的Hash键并在内存中取消分配?

例:

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
Run Code Online (Sandbox Code Playgroud)

PS:我使用ruby 1.8.7.我也试过ruby 1.9.2,但并不是更好.

ruby hash memory-leaks memory-management

5
推荐指数
2
解决办法
1445
查看次数

标签 统计

hash ×1

memory-leaks ×1

memory-management ×1

ruby ×1