ruby-on-rails – Ruby中的内存模型
如何在
ruby中管理内存.对于Ex:如果我们在执行期间采用C程序,则以下是内存模型.与此类似
如何在ruby中处理内存. C: __________________ | | | stack | | | ------------------ | | | <Un Allocated| | space> | ------------------ | | | | | Heap | | | | | __________________ | | | data | __________________ | text | __________________ Ruby: ? 解决方法
Ruby中没有“内存”这样的东西.
分配该对象的位置,分配方式,如果它在内存中保持相同位置或四处移动,则不会指定或观察到该对象.例如,在MagLev上,对象实际上可能根本不在内存中分配,而是在磁盘上或在另一台计算机的内存中. JRuby,IronRuby,Opal,Cardinal,MacRuby等将他们的记忆管理“外包”给第三方,他们甚至不知道他们的记忆发生了什么. Ruby实现可以使用单独的堆栈和堆,它可以使用堆分配的堆栈,甚至根本不使用堆栈(例如Cardinal). 注意: 在YARV中,还有 您可能会注意到我没有写任何关于垃圾收集的内容!嗯,实际上,Ruby只指定何时引用对象以及何时引用对象.如何处理未引用的对象,它没有说.对于实现来回收这些未引用对象所使用的空间是有意义的,并且它们都在某种程度上有效(例如,旧版本的YARV不会回收未引用的符号),但它不是必需的也不是指定的.所有实现都使用非常不同的方法.同样,JRuby,MacRuby,Topaz,MagLev等将该问题“外包”到底层平台,Rubinius使用基于Immix收集器的分代,复制,移动,跟踪收集器,YARV使用简单标记和扫描跟踪收集器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |