在ruby中使用线程时内存泄漏

时间:2017-11-15 10:02:24

标签: ruby multithreading

我有一个脚本应该在不同的线程中ping主机。单独的线程用于单独的特定主机ping,因为有些ping有时需要比其他ping更长的时间。如果我们等待一个ping - 其他超时比实际更大。

该代码为每个主机创建一个单独的线程。我只是从一些例子中复制粘贴它。我不确定这段代码是否正确。我也有内存泄漏。

threads = []

config.each do |array_item|
  host = array_item[0]
  packet_size = array_item[1]
  threads << Thread.new do                                                                                    
    puts "\nCreating a thread for host:#{host} value:#{packet_size}"
    ping(host, packet_size)
  end
end
threads.each(&:join)

我也遇到堆分析,但无法理解错误。我只是假设线程没有终止。

Analyzing Heap (Generation: 10)
-------------------------------

allocated by memory (4717121) (in bytes)
==============================
  3150072  /usr/lib/ruby/2.3.0/timeout.rb:81
  1050024  ./pinger.rb:166

./pinger.rb:166 - 指向threads << Thread.new do

我是否需要控制线程分配和某种线程关闭控件?

0 个答案:

没有答案