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