- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试找出 ObjectSpace.each_object
在控制台中:
class Foo; end
Foo.new
ObjectSpace.each_object(Foo).count
=> 1
GC.start
ObjectSpace.each_object(Foo).count
=> 1
我看过例子,我知道第二个计数应该是0。
知道这里发生了什么吗?
谢谢。
最佳答案
这取决于您的控制台。
最后的结果被保存为 _
,即使它没有被明确分配。运行 GC.start
不会删除最后一个对象:
irb(main):001:0> class Foo; end
=> nil
irb(main):002:0>
irb(main):003:0* Foo.new
=> #<Foo:0x007fca7a309f98>
irb(main):004:0> p ObjectSpace.each_object(Foo).count; GC.start; p ObjectSpace.each_object(Foo).count
1
1
=> 1
irb(main):005:0> p ObjectSpace.each_object(Foo).count; GC.start; p ObjectSpace.each_object(Foo).count
1
0
=> 0
您可以使用 _
和 __
访问最后一个结果和倒数第二个结果:
[1] pry(main)> 'a'
=> "a"
[2] pry(main)> 'b'
=> "b"
[3] pry(main)> p _, __
"b"
"a"
=> ["b", "a"]
Pry 将最后 100 个结果保存在 _out_
Pry::HistoryArray:
[1] pry(main)> class Foo; end
=> nil
[2] pry(main)> Foo.new
=> #<Foo:0x007fd093102118>
[3] pry(main)> ObjectSpace.each_object(Foo).count
=> 1
[4] pry(main)> GC.start
=> nil
[5] pry(main)> ObjectSpace.each_object(Foo).count
=> 1
[6] pry(main)> _out_[2]
=> #<Foo:0x007fd093102118>
您可以使用 _out_.pop!
删除它的最后一个元素:
[1] pry(main)> class Foo; end
=> nil
[2] pry(main)> Foo.new
=> #<Foo:0x007fa90b1ad360>
[3] pry(main)> ObjectSpace.each_object(Foo).count
=> 1
[4] pry(main)> GC.start
=> nil
[5] pry(main)> ObjectSpace.each_object(Foo).count
=> 1
[6] pry(main)> 5.times{_out_.pop!}
=> 5
[7] pry(main)> GC.start
=> nil
[8] pry(main)> ObjectSpace.each_object(Foo).count
=> 0
如果你执行:
class Foo; end
Foo.new
p ObjectSpace.each_object(Foo).count
GC.start
p ObjectSpace.each_object(Foo).count
在脚本中,你得到:
1
0
关于ruby-on-rails - ObjectSpace.each_object(Foo).计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41198367/
ObjectSpace.each_object(ExampleClass) 返回 ExampleClass 的所有实例的枚举器。此枚举器是否保证按对象创建时间排序? 最佳答案 我认为更传统的做法是这样
我正在寻找一种方法来获取 Java 中给定类型的所有实例化对象。 使用 Ruby,您可以使用 ObjectSpace.each_object 方法: a = 102.7 b = 95.1 Object
我正在尝试找出 ObjectSpace.each_object 在控制台中: class Foo; end Foo.new ObjectSpace.each_object(Foo).count
在 Mike H-R 和 Stefan 对 a question of mine 发表评论后,我注意到 ObjectSpace.each_object(String) 几乎包含我能想到的任何字符串:
我目前正在尝试获取类的所有实例,并且我想使用 ObjectSpace.each_object 来实现这一点。 这是我的实际 C 代码: ruby_init(); int ruby_state = 0;
我是一名优秀的程序员,十分优秀!