Утечка памяти с XMLHttpRequest и setInterval
Вот код, который я запускаю в Google Chrome 19.0.1061.1 (Официальная сборка 125213) dev:
<html>
<title>Memory Leak</title>
<script type="text/javascript">
(function(){
this.window.setInterval(function() {
var xhr = new XMLHttpRequest();
xhr.open('GET', '', false);
xhr.send();
}, 50);
}).call(this);
</script>
</html>
Когда я проверяю использование памяти в chrome: // tasks, я вижу, что «Private Memory» растет бесконечно (конфигурация RAM 8GB). Если я изменю пример кода выше на что-то вроде этого:
<html>
<title>Memory Leak</title>
<script type="text/javascript">
(function(){
var xhr = new XMLHttpRequest();
var timeout = this.window.setInterval(function() {
xhr.open('GET', '', false);
xhr.send();
}, 50);
}).call(this);
</script>
</html>
Теперь все в порядке.
Я не понимаюПочему хранение ссылки на функцию setInterval помогает иПочему определение только одной подсказки xhr, так как предыдущее объявление было в закрытии? Это связано только с v8?
Буду признателен за ваше понимание этого.