У меня есть простой код JavaScript, который потребляет память при бесконечной работе.Потребление памяти контролируется профилировщиком внутренней памяти Google Chrome.
setInterval(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'json.txt', true);
xhr.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
};
xhr.send('');
}, 500);
HTML-файл с примером кода выше и json.txt
размещен на моем локальном сервере, получение файла занимает не более 500 мс (этовсегда около 7-10 мс).
В долгосрочной перспективе график памяти выглядит так:
РЕДАКТИРОВАТЬ Такое же окно Chrome через часработа
РЕДАКТИРОВАНИЕ В долгосрочной перспективе (часы) не вся память восстановлена, график все еще возрастает.Я понимаю почему память используется, я не понимаю, почему она не полностью восстановлена .
РЕДАКТИРОВАТЬ Вот как я могууменьшить утечку памяти
var callback = function(){
if(this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
}
setInterval(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'json.txt', true);
xhr.onreadystatechange = callback;
xhr.send('');
}, 500);
Это улучшение позволяет не связывать закрытие обратного вызова с xhr
вар.