【发布时间】:2011-10-20 01:51:58
【问题描述】:
操作系统: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
我必须使用线程.. 请..帮帮我!!
【问题讨论】:
-
请使用空格将您的代码格式化为代码。
-
好吧,你的话题永远不会结束,所以
join可能需要一段时间。 -
他的问题很清楚不是吗?即使线程永远不会结束,内存使用量也不应该增长,那为什么呢?
-
我用
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]测试了这段代码,我的内存使用量根本没有增加。也许这是下一个版本中修复的内存泄漏。
标签: ruby