首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ruby中,分配给类方法中变量的对象可以被垃圾回收吗?

在ruby中,分配给类方法中变量的对象可以被垃圾回收吗?
EN

Stack Overflow用户
提问于 2017-10-28 18:11:46
回答 1查看 304关注 0票数 1

我知道分配给常量的对象不能被垃圾回收。(“Ruby中的常量永远不会被垃圾回收,所以如果一个常量引用了一个对象,那么这个对象就永远不会被垃圾回收。”- https://www.sitepoint.com/ruby-uses-memory/)

但我试图让我的内心平静下来,一般情况下,哪些其他东西永远不会被垃圾收集。

特别是,在类方法中分配给普通变量的对象可以被垃圾回收吗?例如:

代码语言:javascript
复制
class Foo
  def self.bar
    array = []
    1000.times { array << 'string' }
  end
end

在调用Foo.bar之后,这1000个字符串是否可以被垃圾回收,或者它们是否必须挂起,因为它们是根据“数组”变量存储的?

如果数组为@array@@array,会出现什么情况

EN

回答 1

Stack Overflow用户

发布于 2017-10-28 22:47:47

GC检查哪些槽/对象不再被其他对象引用,并释放它们。因此,在您的特定情况下,array没有在任何地方被引用,因此它将被垃圾收集。Here's an article explaining how GC works

类实例变量@instance和类变量@@instance保存对其类变量的引用,这会阻止它们的垃圾收集,直到类本身未定义为止。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46988545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档