Ниже код имеет утечку памяти. Он работает под рубином 2.1.1. Я не могу найти фактическую утечку.Ошибка памяти в памяти рубинового кода в петле
q = Queue.new("test")
while true do
m = q.dequeue
body = JSON.parse(m.body)
user_id = body["Records"][0]
user = V2::User.find(user_id)
post = V2::Post.find(post_id)
end
Через несколько часов бега я добавил GC.start, но ее не решает проблему
q = Queue.new("test")
while true do
m = q.dequeue
body = JSON.parse(m.body)
user_id = body["Records"][0]
user = V2::User.find(user_id)
post = V2::Post.find(post_id)
GC.start
end
Я не знаю, как найти реальную утечку памяти.
Как определяется «Очередь»? Что выглядит 'Queue # dequeue' (я заметил, что' dequeue' не определен для 'Queue', который поставляется с Ruby)? Кто помещает объекты в очередь? Сколько объектов в очереди в среднем? – spickermann
На ваш вопрос ответили? – Dbz