2017-04-20 27 views
1

同一對象名重新創建時對象字面空閒內存是多少?當我從對象文字重新創建相同的對象名時,對內存有什麼影響。例如JS中的對象字面內存性能

var objLit = {}; 
for(var i=0; i<5; i++){ 
    objLit['room'] = {}; 
    objLit['room'].name = "A", 
    objLit['room'].class = 10 
} 

console.log(objLit['room']); 

輸出是當期的但對於4預覽對象常量,其通過for環製成。我的問題:

is all 4 object auto delete? is all 4 object reference auto delete?

+0

在每次循環中,您都用新Object覆蓋'objLit.room'。你想要一個數組。 – PHPglue

+0

數組只接受整數鍵。我有字符串鍵。 – Sandeep

+0

'objLit ['room']'和'objLit.room'是一回事。如果您的屬性不符合'.'語法,則只需要使用字符串版本,就像屬性名稱中有空格一樣。看我的例子。 – PHPglue

回答

0

我給了這個在Chrome瀏覽器嘗試:

var objLit = {}; 

for(var i = 0; i < 500000000; i++){ 
    objLit['room'] = {}; 
    objLit['room'].name = "A", 
    objLit['room'].class = 10 
} 

console.log(objLit['room']); 

如果內存沒有釋放,你會期望該標籤的內存使用量,以保持,而增長循環正在運行。

情況並非如此。如果循環長度爲500000000次,那麼Chrome不消耗更多內存,而不是長達50次迭代。

換句話說,垃圾收集擺脫了以前的價值。
(在Chrome中,但我確信其他瀏覽器對於此類示例的行爲也是如此)。