加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby / Rails垃圾收集

发布时间:2020-12-17 04:25:53 所属栏目:百科 来源:网络整理
导读:由于http是无状态的,因此对应用程序的每个请求都会创建一个新对象. Rails如何清理未使用的对象/频率如何? 解决方法 简单回答: Ruby运行时有一个垃圾收集器.根据运行时(JRuby / JVM分代GC,IronRuby / CLR分代GC,经典Ruby /标记扫描GC),使用不同的算法.但基
由于http是无状态的,因此对应用程序的每个请求都会创建一个新对象. Rails如何清理未使用的对象/频率如何?

解决方法

简单回答: Ruby运行时有一个垃圾收集器.根据运行时(JRuby / JVM分代GC,IronRuby / CLR分代GC,经典Ruby /标记扫描GC),使用不同的算法.但基础知识非常简单:

>根据分配请求,如果“可用内存不足”可用 – GC算法的成分之一是多少 – 那么GC将开始
> GC首先扫描根,它是全局变量和堆栈位置(参数和局部变量),以发现哪些对象仍然存在;它标记了它找到的每个对象
>然后,GC进程查看这些对象内的链接(引用),并递归到那些尚未标记的对象
>然后,GC可以开始移动/复制所有标记的对象,以便在内存中压缩它们
>从新分配发生的“自由指针”被重置为这个压缩的内存块的末尾
>如果仍有“可用内存不足”,则从操作系统分配更多内存
>在扫描过程中未标记的所有旧对象都是垃圾,并通过复制过程和重置空闲指针隐式丢弃.

收集的频率取决于GC的调整,可能受操作系统,物理内存量,操作系统内存压力,用户控制调整,底层平台版本修订,动态优化参数等的影响.大部分它归结为决定酒吧所处的“免费记忆不足”测试,尽管世代收藏家的事情变得更加复杂.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读