2017-04-20 3 views
1

La mémoire libre de l'objet est-elle libre lorsque le même nom d'objet est recréé? quel est l'effet sur la mémoire lorsque je recrée le même nom d'objet à partir de l'objet littéral. par exemple.Performances de la mémoire litteraire d'objet dans JS

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

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

sortie est currect mais qu'en quatre extraits littéral d'objet qui fait par boucle for. ma question:

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

+0

Vous écrasez objLit.room avec un nouvel objet à chaque passage de la boucle. Vous voulez un tableau. Le tableau – PHPglue

+0

n'accepte que les clés entières. J'ai une clé de chaîne. – Sandeep

+0

'objLit ['room']' et 'objLit.room' sont la même chose. Vous n'avez besoin d'utiliser la version String que si votre propriété ne respecte pas '.' Syntaxe, comme lorsqu'il y a un espace dans votre nom de propriété. Voyez mon exemple. – PHPglue

Répondre

0

j'ai donné cette solution dans Chrome:

var objLit = {}; 

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

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

Si la mémoire n'a pas été libéré, vous vous attendez l'utilisation de la mémoire pour cet onglet pour continuer à croître alors que la la boucle était en cours d'exécution.

Ce n'était pas le cas. Chrome ne consomme pas plus de mémoire si la boucle a une longueur de 500000000 itérations, que lorsque la longueur est de 50 itérations. En d'autres termes, le garbage collection se débarrasse de la valeur précédente.
(Dans Chrome, mais je suis sûr que d'autres navigateurs se comportent de la même manière pour un exemple comme celui-ci.)