Добрый день, в ходе изучения руби, столкнулся с проблемой что в ходе работы моего файла "test.rb" кушается много памяти, прожорливость растет, 30MB через 5 минут уже 40 - 50MB.
Пробывал вырезать все "print & puts" ну думал из за принта в консоль и сжирает = не помогло.
Пытался очищать все переменные перед запуском нового потока = не помогло
Пытался ограничивать кол-во потоков = не помогло (ждет пока завершится 10 потоков, стартует по мере завершения)
Кто может подсказать в чем может быть проблема? Возможно перед запуском нового потока в Ruby есть магическая функция "freeMemory()" о которой я не знаю :)
class TestParse
attr_accessor :clientM
attr_accessor :queries
attr_accessor :threads
def initialize()
@threads = []
@clientM = client = Mysql2::Client.new(:host => "localhost", :username => "root", :password => '', :database => 'db')
end
def generateUrl()
groupI = 0
@queries = []
while groupI <= 20 do
prepareQuery()
groupI = groupI+1;
end
end
def prepareQuery
@thread << .......HTTP QUERY.......
hash = JSON.parse(resp.body)
if (resp.code == "200")
@queries << "INSERT INTO `posts` (`text`,`type`) VALUES ('#{@clientM.escape(a['text'])}',1);"
end
end
end
s = TestParse.new()
isgl = 0
while isgl < 20
s.generateUrl
s.threads.each { |thr| thr.join }
print "Query: "+s.queries.length.to_s+"\n"
iQuery = 0
s.queries.each { |q|
s.clientM.query(q)
}
print "==================\n"
s.queries = []
isgl = isgl+1
end