Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ruby memory usage grows forever when use thread

Tags:

ruby

OS: Windows7 32bit main memory : 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 is OK!! memory usages is about 19,756 KB.

But...

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 memory usages is increased continually... after all 1,937,948 KB

I have to use Thread.. Please.. Help Me!!

like image 605
kdream95 Avatar asked Nov 13 '22 15:11

kdream95


1 Answers

There are file reading fixes in ruby 1.9. A script I wrote that reads a ton of data runs ~ 100x faster on ruby1.9. Please upgrade if possible, it's worth it.

like image 126
martyn Avatar answered Dec 23 '22 10:12

martyn