-2

我正在使用 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 应该在使用后关闭。这是真的吗?

4

2 回答 2

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.
于 2013-07-01T09:29:05.310 回答
0

它会在运行前引起语法错误。

于 2013-07-01T08:41:50.480 回答