相关疑难解决方法(0)

如何计算ruby中类的现有实例?

以下是这个问题的一个想法:在创建对象时,增加一个类变量.收集对象后,减少它.正如您所看到的,终结器被调用,并且@@no_foo会减少.但是当我稍后查询它时,减量就消失了.似乎价值只会上升,永不下降(如果我创建两个对象,它将显示2).我错过了一些明显的东西吗

class Foo
  @@no_foo = 0

  def initialize
    puts 'creating object'
    @@no_foo += 1
    ObjectSpace.define_finalizer(self, proc { self.delete })
  end

  def delete
    puts 'deleting object'
    @@no_foo # => 1
    @@no_foo -= 1
    @@no_foo # => 0
  end

  def self.no_foo
    @@no_foo # => 0, 1
  end
end

Foo.no_foo # => 0
f = Foo.new
f = nil

GC.start
Foo.no_foo # => 1

# >> creating object
# >> deleting object
Run Code Online (Sandbox Code Playgroud)

ruby garbage-collection

4
推荐指数
1
解决办法
1710
查看次数

标签 统计

garbage-collection ×1

ruby ×1