Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Memory leak


Автор: JAYBE 29.7.2014, 17:04
Добрый день.
Пример кода - обычный пример, вырванный их контекста на просторах интеренета.
Переделывать его не надо - принципиально понять почему происходит утечка памяти.
Разъясните, пожалуйста.
Код

var theThing = null;
var replaceThing = function () {
  var priorThing = theThing;  // hold on to the prior thing
  var unused = function () {
    // 'unused' is the only place where 'priorThing' is referenced,
    // but 'unused' never gets invoked
    if (priorThing) {
      console.log("hi");
    }
  };
  theThing = {
    longStr: new Array(1000000).join('*'),  // create a 1MB object
    someMethod: function () {
      console.log(12);
    }
  };
};
setInterval(replaceThing, 10);

Автор: MamedovFadil 15.8.2014, 16:24
Бесконечное количество раз, каждые 10 миллисекунд у вас выделяется в куче память для объекта размером в 1 MB. Естественно, рано или поздно она заканчивается. Пользуйтесь отладчиком и профайлером.

Автор: Aliance 18.8.2014, 13:01
3 абзац: http://habrahabr.ru/company/mailru/blog/233553/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)