簡體   English   中英

javascript Garbage Collector是否處理全局變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM