Я хотел бы понять, какой код вызывает утечку памяти в JavaScript и создал script ниже. Однако при запуске script в Safari 6.0.4 в OS X потребление памяти, отображаемое в мониторе активности, действительно не увеличивается.
Что-то не так с моим script или это уже не проблема в современных браузерах?
<html>
<body>
</body>
<script>
var i, el;
function attachAlert(element) {
element.onclick = function() { alert(element.innerHTML); };
}
for (i = 0; i < 1000000; i++) {
el = document.createElement('div');
el.innerHTML = i;
attachAlert(el);
}
</script>
</html>
script основан на разделе "Закрытие" руководства по стилю JavaScript JavaScript: http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Closures#Closures
EDIT: ошибка, которая вызвала утечку вышеуказанного кода, по-видимому, исправлена: http://jibbering.com/faq/notes/closures/#clMem
Но мой вопрос остается: может ли кто-нибудь дать реалистичный пример кода JavaScript, который утечки памяти в современных браузерах?
В Интернете есть много статей, которые предполагают, что утечка памяти может быть проблемой для сложных одностраничных приложений, но мне трудно найти примеры, которые можно запустить в моем браузере.