ruby高度使用内存,可能泄漏

时间:2013-07-01 08:35:29

标签: ruby memory

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

2 个答案:

答案 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)

在运行之前会导致语法错误。