我使用ruby on rails编写了一个小型web应用程序,它的主要目的是上传、存储和显示xml(文件最多可达几MB)文件的结果.运行了大约2个月后,我注意到mongrel进程使用了大约4GB的内存.我做了一些关于调试ruby内存泄漏的研究,但没有找到多少.所以我有两个问题.

  • 在Ruby/rails中有什么好的工具可以用来查找内存泄漏吗?
  • 什么类型的编码模式导致ruby内存泄漏?

推荐答案

查找Rails内存泄漏的一些技巧:

第一个是ObjectSpace中对象对内存使用情况的图形化探索.

最后两个选项将帮助您确定导致内存使用率inflating 的特定使用模式,您可以从中着手.

至于具体的编码模式,根据经验,你必须观察任何处理文件io、图像处理、处理大量字符串等的事情.

我会判断您是否使用了最合适的XML库——众所周知,ReXML速度很慢,而且据信存在漏洞(我没有证据!).还要判断你是否能完成memoize次昂贵的手术.

Ruby-on-rails相关问答推荐

有什么办法能把这写清楚吗?

GO AES GCM加密在解密时出错&S

多对多模型通过控制台创建记录不起作用

Sidekiq with Rails - 控制台与 rake 任务中的不同 Sidekiq 实例

如何通过graphqlMutations 从rails销毁当前用户会话

我如何在不在 gemfile 中的 rake 任务中要求 gem?

使用 Ruby On Rails 的多个用户模型,并设计有单独的注册路由,但只有一个共同的登录路由

带有 simple_form 的按钮内的 HTML 代码

rails 3:将链接显示为按钮?

Rails ActiveRecord:验证单个属性

在公共 Rails 应用程序中将敏感数据存储在哪里?

如何独立测试模型的回调方法?

Rails - 如何在 f.submit 上放置确认弹出窗口?

有没有办法列出所有 belongs_to 关联?

从 Rails 中的 ActiveRecord::RecordNotFound 救援

ActiveRecord 查找以

让 bundler 为不同的平台使用不同的 gem

简单的 rails rake 任务拒绝运行并出现错误不知道如何构建任务,为什么?

在 Rails 3 中突出显示当前页面的最佳方法? -- 有条件地将css类应用于链接

未捕获的 ReferenceError:未定义 ReactDOM