2011-10-20 24 views
5

OS:Windows7的32位 主存儲器:4GB 紅寶石-v:紅寶石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 OK!內存使用量約爲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 存儲器使用量在不斷增加......所有1937948 KB

我必須使用線程以後。 請幫幫我!!

+0

請使用空格將代碼格式化爲代碼。 –

+1

那麼,你的線程永遠不會結束,所以'join'可能需要一段時間。 –

+2

你想實現什麼? – fuzzyalej

回答

1

在ruby 1.9中有文件閱讀修復。我寫的腳本讀取大量數據,運行速度比ruby1.9快100倍。請儘可能升級,這是值得的。