У меня есть веб-страница, которая запускает сценарий HTML5 SharedWorker
. Использование памяти Chrome увеличивается каждый раз, когда эта страница перезагружается (нажатие F5).
Рабочий сценарий очень просто. Каждую секунду (с использованием setInterval
) сообщение отправляется на подключенный порт.
Кажется, что рабочий процесс завершается и перезапускается каждый раз, когда я нажимаю F5. Это то, что я ожидал поскольку на самом деле воркер не используется более чем одним «документом». Однако я не могу понять, почему использование памяти увеличивается при каждом обновлении.
Кто-нибудь знает, почему это происходит?
Учитывая, что объем памяти увеличивается каждый раз. страница перезагружена заставляет меня думать, что я вообще не могу использовать общих воркеров в Chrome. Кто-нибудь смог сделать это без проблем с памятью?
UPDATE
Это HTML-код хостинга:
<div id="output"></div>
<script type="text/javascript" src="/scripts/jquery-1.4.4.js"></script>
<script type="text/javascript">
$(function () {
var worker = new SharedWorker("/scripts/worker.js")
worker.port.onmessage = function(e) {
$("#output").append($("<div></div>").text(e.data));
};
worker.port.start();
});
</script>
... и это worker.js
:
var list = [];
setInterval(function () {
for (var i = 0; i < list.length; ++i) {
list[i].postMessage("#connections = " + list.length);
}
}, 1000);
onconnect = function (event) {
list.push(event.ports[0]);
};
Хостинговая страница запускается / подключается к разделяемому исполнителю и выводит все, что от него получено.
Рабочий код хранит список подключенных портов и отправляет им всем сообщение раз в секунду.
Это простая вещь. Тем не менее, каждый раз страница хостинга перезагружается в Chrome. Полезная нагрузка памяти для этой вкладки увеличена.
Ниже показано использование памяти Chrome после нескольких обновлений:
... после обновления я достиг 250 МБ ...
У меня заканчивается идей, думая, что это ошибка в Chrome. Может ли кто-нибудь дать мне какой-то указатель?
ОБНОВЛЕНИЕ 2
Отключение моего расширения AdBlock, похоже, устранило проблему:
Я был немного доволен, но оказалось, что память все еще используется утечка . Если AdBlock отключен, утечка при каждом обновлении страницы становится немного меньше.