【问题标题】:Rails application not freeing memory?Rails应用程序没有释放内存?
【发布时间】:2012-07-06 13:23:56
【问题描述】:

在我的 Rails 应用程序中,总对象随着每个请求而增加。 GC 运行后对象未释放。我正在使用 Rails 3.2.3 和 ruby​​ 1.9.3。

有人能指出我正确的方向吗?从哪里开始?

有哪些可用的工具?

我尝试过的工具。 ObjectSpace 没有引用创建这些对象的行。 Memprof 不适用于 ruby​​ 1.9.3。 Oink 没有引用创建这些对象的行。

【问题讨论】:

  • Ruby 像任何好的 GC 一样,希望最小化动态内存分配和释放。这意味着 Ruby 将一次性分配大量内存,并为新对象保留该内存,这样就不必进行那么多上下文切换或动态分配。 Ruby 只会在内存紧张时释放内存。
  • 也许这条评论应该是一个答案?
  • @krunalshah 你怎么知道GC运行了相应的resquest/response循环或者GC只在内存达到阈值以上时运行,除非你在你的代码中使用GC.start手动调用GC不好

标签: ruby ruby-on-rails-3 memprof oink objectspace


【解决方案1】:

perftools.rb 有能力提及哪些方法创建了多少对象:

CPUPROFILE_OBJECTS=1

配置文件对象分配而不是 cpu/wall 时间。每个样品 表示在该函数内创建的一个对象。

但是,这是对所有对象的分析,而不仅仅是非垃圾收集的对象。此外,它segfaults 有时在我身上。

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2010-09-26
    • 2016-02-09
    • 1970-01-01
    相关资源
    最近更新 更多