Утечки памяти после location.reload

0

У меня есть код, как показано ниже.

var domNode = somehowGet();

domNode.someEvent = function(){
    domNode.appendChild(createNodeUsing(window));
};

window.guid = createGuid(); // called at startup

После того, как я вызываю location.reload, я открываю профилировщик DevTools и вижу некоторый узел отдельного дерева и дополнительный экземпляр Window, и их количество точно совпадает с количеством перезагрузок. Т.е. если я вызову location.reload 5 раз, будет еще 5 экземпляров объекта Window, и у всех из них будут разные Guids.

Вопрос в том, будет ли GC освобождать память, если нет других ссылок на domNode, кроме тех, которые я показал выше?

Другие слова Мне нужно знать, почему существует несколько экземпляров Window

Браузер - это Chromium, некоторые из последних версий.

  • 0
    Такого кода больше, чем 10 МБ, и я не могу исправить его надлежащим образом в предсказуемый период времени. Мне нужно знать, может ли такой код вызвать утечку памяти.
Теги:
dom
memory-leaks

1 ответ

1

domNode.someEvent = function() {} - круговой эталонный шаблон. domNode получил ссылку на someEvent, который является атрибутом, и в этой функции someEvent domNode по-прежнему является ссылочным (как закрытие).

Я не уверен, что хром может переработать память, но я думаю, что этого шаблона следует избегать.

Подробнее см. Здесь. http://javascript.info/tutorial/memory-leaks#ie-lt-8-dom-js-memory-leak

Ещё вопросы

Сообщество Overcoder
Наверх
Меню