使用线程时,ruby内存使用量会永远增长

时间:2011-10-20 01:51:58

标签: ruby

操作系统:Windows7 32位 主内存:4GB ruby -v:ruby 1.8.6(2008-08-11 patchlevel 287)[i386-mswin32]

# big.mkv file size : 1.45GB

ex1.rb

puts $$

File.open("D:/test/big.mkv", "rb") do |f|
  while buff = f.read(4096)
  end
end

sleep 1000

ex1.rb没问题!内存使用量约为19,756 KB。

但是...

ex2.rb

puts $$

th1 = Thread.new do
  loop do
    sleep 1
  end
end

File.open("D:/test/big.mkv", "rb") do |f|
  while buff = f.read(4096)
  end
end

th1.join

ex2.rb 记忆用法不断增加......毕竟是1,937,948 KB

我必须使用Thread .. 请帮助我!!

1 个答案:

答案 0 :(得分:1)

ruby​​ 1.9中有文件读取修复。我编写的一个脚本读取大量数据,在ruby1.9上运行速度快了约100倍。如果可能请升级,这是值得的。