我有一個關於垃圾收集如何在Javascript中工作的快速問題。Javascript內存釋放
如果我有這樣的代碼:
var c = {name : ‘Bob’};
c = {name : ‘Mary’};
在變量c上面的代碼所指向的對象{名稱:「鮑勃」}。但是,我設置c指向內存中的另一個對象{name:'Mary'}。該c最初指向的對象({name:'Bob'})會發生什麼?由於沒有引用它,該原始對象是否會在內存中被釋放?
在另一種情況:
var c = {name : ‘Bob’};
d = c;
c = {name : ‘Mary’};
現在,原來的對象是c是指向({名稱:「鮑勃」}):「鮑勃」不會因爲d仍然指向{名稱被釋放}即使在「c」被改爲指向新對象之後:{name:'Mary'}。正確?
所以基本上,只要仍有指向它的引用,對象將不會從內存中釋放。
有人請向我解釋,如果我正確地思考這個問題嗎?
是的,原則上這是正確的。但是,*發生垃圾收集時完全取決於瀏覽器,因此經常使用表達式「可用於垃圾回收」而不是「垃圾回收」。 – RobG