У меня есть веб-страница, которая запускает скрипт HTML5 SharedWorker
.Использование памяти Chrome увеличивается при каждой перезагрузке этой страницы (нажатие клавиши F5).
Рабочий сценарий очень прост.Каждую секунду (с помощью setInterval
) на подключенный порт отправляется сообщение.
Кажется, что рабочий процесс завершается и перезапускается каждый раз, когда я нажимаю F5.Это то, что я ожидал, поскольку рабочий фактически не используется более чем одним «документом».Однако я не могу понять, почему использование памяти увеличивается при каждом обновлении.
Кто-нибудь знает, почему это происходит?
Учитывая, что память увеличивается при каждой перезагрузке страницы, я думаю, что не могуиспользовать общих работников вообще в Chrome.Кто-нибудь смог сделать это без проблем с памятью?
ОБНОВЛЕНИЕ
Это хостинг 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 после нескольких обновлений:

... после обновления еще немного I 'm достигает 250 МБ ...

У меня заканчиваются идеи, и я думаю, что это должно быть ошибкой в Chrome.Кто-нибудь может дать мне какой-нибудь указатель?
ОБНОВЛЕНИЕ 2
Отключение моего расширения AdBlock, похоже, решило проблему:

Так что я был на некоторое время счастлив, но оказалось, что память все еще протекает .Когда AdBlock отключен, он просто вытекает немного меньше за обновление страницы.