跟踪Ruby脚本中的内存泄漏

时间:2009-04-21 00:06:10

标签: ruby memory memory-leaks

我创建了一个名为babylon的Ruby XMPP框架。然后我用它创建了一些应用程序,即使它们运行得非常顺利,似乎它们正在逐渐吃掉我的计算机内存。

我怀疑是泄密,所以首先,我在我的代码中添加了这个:

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

正如所怀疑的那样,产量不断增加......但很慢,但肯定。

我试图用Dike捕捉泄漏,如explained here

不幸的是,Dike无法发现任何泄漏。即使它运行了很长时间,它仍然会返回相同的对象。

那么,我怎么能确定我的框架是否泄漏,而不仅仅是在某个最大点之前占用一些RAM然后开始释放它?

然后,我如何实际跟踪泄漏并修复它们?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我听说过有关Ruby Memory Tracking API的好消息,但它不是免费的。

还有一篇有用的博客文章using valgrind来查找ruby内存泄漏。

Ruby on Rails还有其他解决方案,但似乎你根本就没有使用rails。