[英]Does javascript Garbage Collector dispose global variables?
因為看到了一些不同的評論,所以我對此感到困惑。 我正在閱讀一本javascript書,其中提到將全局變量設置為null是一種好習慣(假設沒有其他引用),並且GC在下一次掃描時會為該變量回收內存。 我看到其他評論說全局變量永遠不會被GC處理。
同樣,當在OOP結構中編程javascript時,如果我遇到類似的情況(游戲在全局環境中),會發生什么情況:
var game = {};
game.level = 0;
game.hero = new hero();
//do stuff
game.hero = null;
由於英雄居住在全局環境中存儲在游戲中的對象中,因此,例如,如果將英雄設置為null,GC是否會將其處置?
從某種意義上說,仍然不會存在全局變量的情況下,GC永遠不會丟棄全局變量。 但是,將其設置為null
將允許收集其引用的內存。
例如
之前:
global -> {nothingness}
后:
global -> var a -> object { foo: "bar" }
將a
設置為null
:
global -> var a -> null
在這里,對象使用的內存將可以收集。 變量a
仍然存在,並且僅引用null
。
關於從不收集全局變量的說法有些誤導。 可以准確地說,任何可追溯到全局上下文的內存當前都不符合收集條件。
回答您的問題,是的-英雄對象符合收集條件,因為它與全局上下文的間接連接已斷開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.