Отслеживание утечек памяти в Ruby Script

Я создал Ruby XMPP Framework под названием babylon. Затем я создал с ним несколько приложений, и, хотя они работают довольно плавно, кажется, что они постепенно съедают память моего компьютера.

Я подозревал утечки, поэтому сначала я добавил это в какой-то момент своего кода:

puts `ps -o rss= -p #{Process.pid}`.to_i

Как и предполагалось, производительность продолжала расти ... медленно, но верно.

Я пытался искать утечки с Дайком, как объяснил здесь.

К сожалению, Дике не удалось обнаружить утечки. Даже после того, как он работал довольно долгое время, он по-прежнему возвращает те же объекты.

Итак, как я могу быть уверен, что мой фреймворк протекает, а не просто занимаю некоторую оперативную память до некоторой максимальной точки, а затем начинаю ее освобождать?

И как я могу отслеживать утечки и исправлять их?

Спасибо за вашу помощь!


person Julien Genestoux    schedule 21.04.2009    source источник


Ответы (1)


Я слышал хорошие отзывы об Ruby Memory Tracking API, но это не так. бесплатно.

Также есть полезная запись в блоге для с использованием valgrind найти утечки памяти в Ruby.

Существуют и другие решения для Ruby on Rails, но похоже, что вы вообще не используете рельсы.

person Kyle Boon    schedule 23.04.2009
comment
@Julein Genestoux, у вас есть два решения по цене одного. - person Wayne Conrad; 02.03.2010