操作系统:Windows7 32位 主内存:4GB ruby -v : ruby 1.8.6 (2008-08-11 补丁级别 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.. 请..帮助我!!
最佳答案
ruby 1.9 中有文件读取修复。我编写的读取大量数据的脚本在 ruby1.9 上运行速度提高了 100 倍。请尽可能升级,这是值得的。
关于使用线程时,ruby 内存使用量永远增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830285/