У меня есть код, как показано ниже.
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, некоторые из последних версий.
domNode.someEvent = function() {} - круговой эталонный шаблон. domNode получил ссылку на someEvent, который является атрибутом, и в этой функции someEvent domNode по-прежнему является ссылочным (как закрытие).
Я не уверен, что хром может переработать память, но я думаю, что этого шаблона следует избегать.
Подробнее см. Здесь. http://javascript.info/tutorial/memory-leaks#ie-lt-8-dom-js-memory-leak