2015-11-03 43 views
-1

我有一個簡短的問題,只是出於好奇。 比方說,我有一個對象,它有一個數組作爲屬性this.arr = ["one", "two", "three", ...],並用n元素填充此數組。JavaScript,內存:Array中的元素

如果我運行this.arr = [],所有這些元素將會發生什麼。他們是否被刪除,保存在內存中,泄漏?

謝謝!

+1

可能重複的[如何在JavaScript中釋放內存](http://stackoverflow.com/questions/8467350/how-to-free-up-the-memory-in-javascript) – felipsmartins

+0

閱讀:[Javascript內存管理](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management) – felipsmartins

+0

[如何在JavaScript中清空數組?](http://stackoverflow.com/questions/1232040/how-to-empty-an-array-in-javascript) –

回答

2

this.arr = []將創建一個新的空數組並將其分配給arr屬性。如果程序中沒有更多的前一個數組的引用,它將最終被垃圾回收(由JS引擎自動銷燬)。但是如果在某個地方還是有參考的話,它仍然會存在。

this.arr = [1, 2, 3, 4]; 
var backup = this.arr; 
this.arr = []; 
// backup still points to the array, so it won't be destroyed 

如果你只是想刪除,你將不再使用它的一個數組,你可以做this.arr = null代替。

在JS中,沒有「內存泄漏」這樣的事情。但是,您可以忘記擺脫不再需要的物體。如果該對象具有對其他對象的引用,而其他對象的引用是其他對象的引用,那麼樹的單個對象將不會被破壞。

大多數情況下,如果使用臨時變量,則不需要擔心。

0

它們被刪除。事實上,這是清空數組的一種快速方法。

+0

這個答案很短,你有沒有相關的資源呢? – areim

0

它將被刪除。如果將this.arr的值分配給另一個變量,則該數組將是可重用的,但其他變量將具有不同的內存地址,但存儲原始變量的地址將被清空。

0

它們將被刪除,如果字符串對象不再被任何東西引用。字符串對象因此適合於垃圾收集來刪除/釋放這些對象。