Вот код, который я запускаю в 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: //, я вижу, что «Частная память»"растет бесконечно (8GB RAM config).Если я изменю пример кода выше на что-то вроде этого:
<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?
Буду признателен за ваше понимание.