Как я могу избежать утечек памяти в Firefox? - PullRequest
5 голосов
/ 20 мая 2010

Кажется, что в IE есть много информации об утечках памяти и о том, как веб-разработчики могут их избежать, но я не могу найти много о том, как избежать утечек в FF. Я нашел много случайных советов о том, как конечные пользователи могут настроить свои предпочтения, или советов для разработчиков расширений, но мало о том, что я могу сделать как веб-разработчик, чтобы убедиться, что мои страницы не просочились. Я что-то пропустил? Кажется ленивым просто винить в этом пользователя и говорить «у вас слишком много расширений». Или основные шаблоны такие же, как в IE - циклические ссылки и все такое?

Кроме того, если кто-нибудь знает какие-либо инструменты для устранения утечек в FF, это было бы здорово. Я нашел это: https://addons.mozilla.org/en-US/firefox/addon/2490/ Но это, видимо, только для разработки Chrome и расширений.

Ответы [ 5 ]

3 голосов
/ 20 мая 2010

Вне шаблонов дизайна в пользу единственно истинно безопасного способа - тщательно протестировать свои страницы. Для контроля использования памяти браузером Task Manager все в порядке, но Process Explorer предоставляет более точные результаты.

JavaScript - одна из причин утечек памяти, но будьте осторожны с флэш-фильмами на страницах. Наша команда по контенту добавила фильм из нашего конструкторского отдела, в котором использовался эффект трёхстороннего перехода, и это поглощало 10 Мб каждые 20 с или около того. Просто просматривая цикл просмотра фильма, в TaskManager было очевидно, что скачок памяти происходит, когда происходит аффект, и он никогда не отпускает его обратно.

2 голосов
/ 21 мая 2010

Многое из того, что вы прочитали о том, как избежать утечек памяти в браузерах, - о том, как избежать вещей, которые заставляют браузер не восстанавливать память, которую он должен восстанавливать.

Однако во многих случаях более существенная проблема связана с тем, что веб-страницы удерживают объекты, которые им больше не нужны. Работа браузера заключается только в том, чтобы вернуть вещи, которые больше не «достижимы», то есть вещи, к которым скрипт / страница больше не могут добраться. Если вы накапливаете объекты в массиве и не удаляете их, когда закончите с ними, использование памяти будет увеличиваться по мере увеличения массива, и браузер ничего не сможет с этим поделать.

Чтобы сформулировать это по-другому: это проблема утечки памяти на веб-странице, а не в браузере. И инструмент, который вам нужен для этого, - это инструмент для профилирования памяти, позволяющий исследовать объекты, доступные на вашей странице, чтобы вы могли определить, есть ли там что-то, за что вы больше не должны держаться. Написание такого инструмента для Firefox было в моем списке вещей, которые нужно сделать некоторое время, но я еще не дошел до него. Я думаю, что может быть продолжена работа по написанию того, что интегрируется в Firebug.

2 голосов
/ 20 мая 2010

Посмотрите на эту ссылку: http://www.mozilla.org/performance/tools.html

Ссылка найдена на Профилировщик памяти Javascript для Firefox

2 голосов
/ 20 мая 2010

Вы можете принудительно запустить сборщик мусора в FireFox. Garbadge Collector уничтожит и выпустит объекты, которые больше не используются. Единственная возможность «утечки памяти» с помощью сборщика мусора - это не «утечка», а ссылка, которая не имеет смысла: удалите все ссылки на объекты, которые вы не хотите использовать.

Подробнее на этой странице:
http://adblockplus.org/blog/different-ways-to-force-garbage-collection

0 голосов
/ 20 мая 2010

Я не знаю, есть ли конкретная информация для Firefox, но общие советы все еще применяются.

Я предлагаю вам внимательно изучить все циклы и рекурсивные функции.Повторно используйте существующие объекты для создания новых и убедитесь, что временные объекты и примитивы выходят из области видимости, чтобы их можно было освободить.

...