【发布时间】: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