在Ruby on Rails项目中查找内存泄漏

ruby-on-rails ruby memory memory-leaks

6724 观看

3回复

109404 作者的声誉

我有一个Ruby on Rails项目,似乎是一个内存泄漏。它一直使用越来越多的内存,直到它崩溃。使用ObjectSpace转储每个类的对象数量我发现了这个:

Name                                                              Count
-----------------------------------------------------------------------
String                                                           649476
Hash                                                              59695
Array                                                             39407
ActiveSupport::Multibyte::Codepoint                               19337
FileNode                                                          17134
Time                                                               3391
Regexp                                                             1944
ActionController::Routing::DividerSegment                          1743
Proc                                                               1597
Gem::Version                                                       1545
Class                                                              1503
Gem::Requirement                                                   1479
ActiveRecord::DynamicFinderMatch                                   1021

我相信FileNode是个问题。这是一个模型。任何想法如何找到保存17k FileNodes的引用?

这是使用Ruby 1.8.6和Rails 2.2.0。不幸的是,升级不是一种选择。

作者: pupeno 的来源 发布者: 2010 年 10 月 1 日

回应 (3)


5

58729 作者的声誉

您可能希望查看演示文稿“垃圾收集和Ruby堆”:

http://www.scribd.com/doc/32718051/Garbage-Collection-and-the-Ruby-Heap

从幻灯片26开始,解释了各种有用的工具(ltrace,bleak_house,memprof等)。

作者: Michael Kohl 发布者: 01.10.2010 01:28

7

298873 作者的声誉

Charles Oliver“Headius”Nutter最近撰写了一系列关于使用JVM工具调试Ruby内存泄漏的博客文章:

IIRC,JRuby社区的其他成员同时也在同一主题上发布了几篇其他博客文章。

他们的基本论点(虽然他们过于礼貌而不是这样说)是使用JRuby以外的任何东西来调试内存泄漏只是简单的愚蠢,仅仅因为JRuby可以使用比所有 Ruby 更多的工程工作量的Java工具分析工具在一起。Ruby社区免费获取这些工具,因为所有企业Java无人机都在为它们付费。

作者: Jörg W Mittag 发布者: 01.10.2010 02:28

2

336 作者的声誉

我想你会发现Aman Gupta的Debugging Ruby非常有帮助。他一直致力于在Rails 3中查找和修复内存泄漏,因此他的调试技术肯定会有所帮助。

http://www.scribd.com/doc/23548865/Debugging-Ruby

作者: rohit.arondekar 发布者: 03.10.2010 01:11
32x32