【发布时间】:2009-07-13 20:04:55
【问题描述】:
由于 http 是无状态的,对应用程序的每个请求都会创建一个新对象。 Rails 如何清理未使用的对象/多久清理一次?
【问题讨论】:
标签: ruby-on-rails ruby garbage-collection
由于 http 是无状态的,对应用程序的每个请求都会创建一个新对象。 Rails 如何清理未使用的对象/多久清理一次?
【问题讨论】:
标签: ruby-on-rails ruby garbage-collection
简单的答案:Ruby 运行时有一个垃圾收集器。根据运行时(JRuby/JVM 分代 GC、IronRuby/CLR 分代 GC、经典 Ruby/mark-sweep GC)使用不同的算法。但基础非常简单:
收集的频率取决于 GC 的调优,可能受操作系统、物理内存量、操作系统内存压力、用户控制的调整、底层平台版本修订、动态优化参数等影响. 其中大部分归结为确定“可用内存不足”测试的标准在哪里,尽管对于世代收集器来说事情变得更加复杂。
【讨论】:
如果您对此感兴趣,请查看 Phusion 团队关于写时复制垃圾收集的博客系列,以及他们为改进 Ruby 企业版中默认的 ruby gc 方案所做的努力。
http://izumi.plan99.net/blog/index.php/2007/04/05/saving-memory-in-ruby-on-rails/
该系列的其他链接在这里:
【讨论】: