在ruby中删除类实例

在ruby中删除类实例,ruby,class,Ruby,Class,我一直在尝试删除一个类实例。以下是我想要的: class SomeClass def initialize some_stuff end def delete self.delete end end 调用SomeClass\u instance.delete会得到: SystemStackError: stack level too deep 如果没有定义delete方法,它会给我一个NoMethodError 我尝试的每件事要么给我错误,要么什么也不做。如果

我一直在尝试删除一个类实例。以下是我想要的:

class SomeClass
  def initialize
    some_stuff
  end
  def delete
    self.delete
  end
end
调用
SomeClass\u instance.delete
会得到:

SystemStackError: stack level too deep
如果没有定义
delete
方法,它会给我一个
NoMethodError


我尝试的每件事要么给我错误,要么什么也不做。如果有人能解释删除类实例是如何工作的,或者如果有可能的话,那就太好了。

当您用垃圾收集标记请求时,我假设您试图做的事情类似于C中的
free

Ruby中的垃圾收集是自动进行的。一旦对象不再在内存中的任何位置被引用,该对象使用的内存将在下一个GC循环中重新收集


您不需要手动释放内存。只需确保不要在变量中保留对对象的引用,尤其是在方法范围之外的变量中,例如全局变量、实例变量或类变量。

通过
删除
可以实现什么?为什么不将其分配给
nil
?在方法
delete
的上下文中,
self.delete
与调用
delete
相同,这就是为什么会出现
SystemStackError
。使用名为
foo
的方法调用
self.foo
也是一样的。我知道GC是自动发生的,但仅仅删除引用本身就足够了吗?假设我有一个实例“my_instance=Class.new”,我添加了“my_instance=nil”,这足以删除引用吗?@Dr.hoeniker:如果没有其他引用,那么是的,最终将收集该实例。@Dr.hoeniker:不确定类对象是否得到相同的处理(在您的示例行中,
instance=Class.new
)。我敢打赌,类对象进入某个注册表,该注册表保存对它们的引用。但是您的常规程序不会创建数百万个动态一次性类。