0
计划 - 我混乱与Ruby的`GC#start`
p RUBY_VERSION
a = "A"
b = "B"
p "#{a}"
p "#{b}"
p "Garbage Count => #{GC.count}"
b = "D"
p "Garbage Count => #{GC.count}"
GC.start
p "Garbage Count => #{GC.count}"
p "#{a}"
p "#{b}"
输出:
"1.9.3"
"A"
"B"
"Garbage Count => 1"
"Garbage Count => 1"
"Garbage Count => 2"
"A"
"D"
在Program I
的p "Garbage Count => #{GC.count}"
输出让我困惑这是1,1,2
。与garbage objects
计数混淆。所以我尝试了如下的修改版本Program-I
。
在哪里我注释掉GC.start
。现在在看的Program -II
输出似乎 正如我在我的第一个程序,这反过来又破坏了无参照物 "B"
strated GC.start
。
计划 - II
p RUBY_VERSION
a = "A"
b = "B"
p "#{a}"
p "#{b}"
p "Garbage Count => #{GC.count}"
b = "D"
p "Garbage Count => #{GC.count}"
#GC.start
p "Garbage Count => #{GC.count}"
p "#{a}"
p "#{b}"
输出:
"1.9.3"
"A"
"B"
"Garbage Count => 1"
"Garbage Count => 1"
"Garbage Count => 1"
"A"
"D"
最后的问题是:
(a)在从输出中清楚的1个对象之前。它是什么对象?
(b)为什么没有引用对象B
没有被销毁没有GC.start
?
EDIT
p GC.count
p GC.disable
p GC.count
输出
1
false
1
在abive代码我已禁用
garbage collection
。为什么呢最后
GC.count
是示出输出作为
1
?
谁能帮助我了解在我的脑海中提出的问题如上所述。
见我**编辑** – 2013-03-18 13:38:40