Утечка памяти в Chrome при использовании Shared Worker? - PullRequest
7 голосов
/ 19 августа 2011

У меня есть веб-страница, которая запускает скрипт 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 после нескольких обновлений:

After refreshing a couple of times I've reached 100 MB

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

Reaching 250 MB after some more refreshing

У меня заканчиваются идеи, и я думаю, что это должно быть ошибкой в ​​Chrome.Кто-нибудь может дать мне какой-нибудь указатель?

ОБНОВЛЕНИЕ 2

Отключение моего расширения AdBlock, похоже, решило проблему:

Running without AdBlock

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

1 Ответ

1 голос
/ 13 августа 2012

Похоже, что команда Chromium решила эту проблему. Я не могу больше это воспроизводить.

...