LINUX.ORG.RU

История изменений

Исправление Black_Roland, (текущая версия) :

Вообще неправильный тест. На создание свойств объекта тоже тратится память. Знаю что при использовании delete ссылки очищаются не всегда, но воспроизвести не получается.

Так думаю правильнее:

<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
  var a = { one: 'one', two: 'two' };
  var b = [];
  var i;
  for (i = 10000000; i > 0; i--) {
    b[i] = null;
  }
  var go = function() {
    for (i = 10000000; i > 0; i--) {
      b[i] = a;
    }
    alert('Done!');
  }
</script>
<button onclick="go()">Go!</button>
</body>
</html>
Сначала забиваю массив значениями null, потом заменяю значения на ссылки на a. В итоге 78.9МБ до и 79.0МБ после нажатия «Go!». http://storage5.static.itmages.com/i/14/1025/h_1414239480_9878626_4764bc283e.png (в конце я GC запустил)

Исходная версия Black_Roland, :

Вообще неправильный тест. На создание свойств объекта тоже тратится память. Знаю что при использовании delete ссылки очищаются не всегда, но воспроизвести не получается.

Так думаю правильнее:

<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
  var a = { one: 'one', two: 'two' };
  var b = [];
  var i;
  for (i = 10000000; i > 0; i--) {
    b[i] = null;
  }
  var go = function() {
    for (i = 10000000; i > 0; i--) {
      b[i] = a;
    }
    alert('Done!');
  }
</script>
<button onclick="go()">Go!</button>
</body>
</html>
Сначала забиваю массив значениями null, потом заменяю значения на ссылки на a. В итоге 78.9МБ до и 79.0МБ после нажатия «Go!». http://storage5.static.itmages.com/i/14/1025/h_1414239480_9878626_4764bc283e.png