Приведет ли этот скрипт JavaScript к утечке памяти? - PullRequest
2 голосов
/ 13 мая 2011

Этот вопрос зависит от моего предыдущего вопроса: Браузер падает через 10-15 минут На этот вопрос я получил ответ, в котором говорится, что мой код вызывает утечку памяти. Поэтому я пытаюсь найти точку, где происходит утечка памяти.

Не приведет ли этот скрипт к утечке памяти?

var j = function (i, q, r, a) {
        return function (s) {
            var p = r.annotation;
            if (p.hasOwnProperty(i)) {
                p[i](p, r, a.dygraph_, s)
            } else {
                if (a.dygraph_.attr_(q)) {
                    a.dygraph_.attr_(q)(p, r, a.dygraph_, s)
                }
            }
        }
    };

Если да, то есть ли какое-нибудь решение, которое я могу сделать, чтобы предотвратить утечку памяти?

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Непонятно, если есть утечки памяти, но если бы это был мой код, я бы изменил его следующим образом (не считая неверных имен переменных):

var j = function (i, q, r, a) {
    var p = r.annotation,
        dygraph = a.dygraph_;

    return function (s) {
        if (p.hasOwnProperty(i)) {
            p[i](p, r, dygraph, s);
        } else {
            var aqExpression = dygraph.attr_(q);

            if (aqExpression) {
                aqExpression(p, r, dygraph, s);
            }
        }
    };
};
0 голосов
/ 06 августа 2012

Похоже, что вы теряете память с этим кодом.

Утечка памяти обычно происходит, когда задействованы элементы DOM.

Я написал это руководство по шаблонам утечки памяти в JavaScriptи как их отладить: http://www.vladalexandruionescu.com/2012/08/javascript-memory-leaks.html. Надеюсь, вы найдете это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...