我创建了一个名为babylon的Ruby XMPP框架。然后我用它创建了一些应用程序,即使它们运行得非常顺利,似乎它们正在逐渐吃掉我的计算机内存。
我怀疑是泄密,所以首先,我在我的代码中添加了这个:
puts `ps -o rss= -p #{Process.pid}`.to_i
正如所怀疑的那样,产量不断增加......但很慢,但肯定。
我试图用Dike捕捉泄漏,如explained here。
不幸的是,Dike无法发现任何泄漏。即使它运行了很长时间,它仍然会返回相同的对象。
那么,我怎么能确定我的框架是否泄漏,而不仅仅是在某个最大点之前占用一些RAM然后开始释放它?
然后,我如何实际跟踪泄漏并修复它们?
感谢您的帮助!
答案 0 :(得分:1)
我听说过有关Ruby Memory Tracking API的好消息,但它不是免费的。
还有一篇有用的博客文章using valgrind来查找ruby内存泄漏。
Ruby on Rails还有其他解决方案,但似乎你根本就没有使用rails。