我正在使用Ruby 1.9.3p0。我编写的程序在运行4个多小时后会占用大量内存。我使用以下宝石:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'cgi'
require 'domainatrix'
以下代码运行超过10,000次,我怀疑它可能会导致泄漏。
File.open('output.txt', 'a') do |file|
output.each_line do |item|
item = item.match(/^[^\s]+/)
item = item.to_s
if item = item.match(/[a-zA-Z0-9\-_]+\..+\.[a-zA-Z]+$/)
item = item.to_s
if item.length > 1
#puts "item: #{item}"
#item = item.to_s
item = Domainatrix.parse(item)
puts "subdomain: #{item.subdomain}"
if (item.domain == domain)
file.puts item.subdomain
puts item.subdomain
end
end
end
end
end
另一方面,我使用哈希表来存储每个链接。
您认为Ruby可能会占用大量内存?
更新
另外我相信File.open应该在使用后关闭。这是真的吗?
答案 0 :(得分:1)
first don't require 'rubygems' not required in ruby 1.9. you forgot to use ')' after if condition.
if (item.domain == domain
yes File.open closes the file.
答案 1 :(得分:0)
在运行之前会导致语法错误。