【发布时间】:2015-01-01 11:06:09
【问题描述】:
这是重现问题的示例脚本
require 'mechanize'
agent = Mechanize.new
agent.history.max_size = 0
5000.times do |i|
agent.get('http://www.yahoo.com')
agent.history.clear
p `ps -o rss -p #{$$}`.strip.split.last.to_i * 1024 # Prints out memory usage of the ruby process
end
我同时使用agent.history.max_size 和agent.history.clear,但似乎每个循环的内存使用量都在增加。
这是显示内存使用量增加的输出(从 48MB 开始,每个循环增加 1-2MB)。
48603136
50274304
51470336
53260288
54984704
55836672
56799232
57884672
59150336
60358656
61349888
62193664
...
如何让 Mechanize 停止泄漏内存?
【问题讨论】:
-
如果您在每次迭代中创建一个新代理而不是多次重用同一个代理,行为会改变吗?
-
没有变化,仍然看到与上面相同的内存大小增加。
标签: ruby memory memory-leaks mechanize mechanize-ruby