加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:10:22 所属栏目:百科 来源:网络整理
导读:我有一个 Ruby on Rails项目,似乎是一个内存泄漏.它不断使用越来越多的内存,直到它崩溃.使用ObjectSpace转储每个类的对象数量我发现这个: Name Count-----------------------------------------------------------------------String 649476Hash 59695Array
我有一个 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无人机都为他们付费.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读