Утечка памяти внутренней функции Javascript? - PullRequest
1 голос
/ 24 января 2011

Я недавно работал с Javascript, но на самом деле я не очень опытен в этом. Я пытаюсь отследить то, что выглядит как утечка памяти, так как использование памяти, похоже, постоянно увеличивается. У меня есть идея, что может быть причиной этого - использование внутренних функций. Я использую внутренние функции при работе с XMLHTTPRequests (и другими связанными объектами), и эти запросы создаются каждые несколько секунд. Я чувствую, что возможно я не закрываю это должным образом или кое-что. Итак, вот код для одной из внутренних функций, если кто-то может сказать мне, если это проблема, и как это исправить, это было бы здорово. (Это в контексте IE, я не знаю и не могу узнать, происходит ли это в других браузерах).

    me.request.open("GET", url, true);
    me.request.onreadystatechange = onReadyStateChange;
    me.request.send(); 

    function onReadyStateChange() {
        if (4 == me.request.readyState) {
            if (me.request.status == 200) {
                var results = me.request.responseText;
                var resultsString = me.request.responseText.toString();
                me.stringOperation(resultsString);
                me.request.abort();
                me.request = null;
            } else {
                me.request.abort();
                me.request = null;
            }
        }
    }

1 Ответ

1 голос
/ 24 января 2011

Добавить

function noop() {}

А затем в onReadyStateChange, после me.request = null, me.request.onreadystatechange = noop.

Это удаляет циклическую ссылку между me и onReadyStateChange, которая пересекает барьер объекта JS / хост-объекта.

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