【发布时间】:2011-04-19 20:24:04
【问题描述】:
我有一个似乎是内存泄漏的 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 文件节点的引用保存在哪里?
这是使用 Ruby 1.8.6 和 Rails 2.2.0。不幸的是,升级不是一种选择。
【问题讨论】:
-
我遇到了同样的麻烦,除了我担心它与大量的字符串对象有关。每次我重新加载一个页面时,我都会得到大约 10,000 个从未被垃圾收集的新字符串。你在这里也有一个巨大的数字。你曾经解决过这个问题吗?
-
嘿@pupeno,你还记得最终导致内存泄漏的原因吗?我认为有红宝石泄漏的例子会有很大的帮助:)
-
@UlysseBN 不,抱歉,时间太早了 :(
标签: ruby-on-rails ruby memory memory-leaks