ruby-on-rails – 在Ruby on Rails项目中查找内存泄漏

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在Ruby on Rails项目中查找内存泄漏前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 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.不幸的是升级不是一个选择.

解决方法

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

> Browsing Memory the JRuby Way
> Finding Leaks in Ruby Apps with Eclipse Memory Analyzer
> Browsing Memory with Ruby and Java Debug Interface
> Monitoring Memory with JRuby,Part 1: jhat and VisualVM
> Monitoring Memory with JRuby,Part 2: Eclipse Memory Analyzer

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

他们的基本观点(尽管他们太有礼貌地用这种方式来表示),使用JRuby以外的任何内容来调试内存泄漏只是简单的愚蠢,只是因为JRuby可以使用Java工具,而不是所有的Ruby一起分析工具. Ruby社区免费获得这些工具,因为所有的企业Java无人机都为他们付费.

猜你在找的Ruby相关文章