- PVSM.RU - https://www.pvsm.ru -

В Firefox 16 заработает инкрементальный сборщик мусора

16-я версия браузера Firefox, релиз которй намечен на 9 октября, содержит серьёзное обновление движка JavaScript. Сборщик мусора перейдёт от стратегии «stop-the-world», когда на время уборки полностью замораживается работа скриптов, к инкрементальной стратегии, когда сборка мусора происходит в несколько этапов. Хотя в целом работа сборщика мусора будет отнимать немного больше времени, отзывчивость браузера существенно улучшится, так как элементы интерфейса, анимация и игры не будут больше подвисать на несколько сотен миллисекунд на время уборки.

Посмотреть, как работает новый сборщик мусора, и поэкспериментировать с его параметрами можно, установив бета-версию Firefox (инструкция для Ubuntu [1]). На странице about:config настройки находятся в ветке javascript.options.mem.gc_*. Увидеть результат своих действий можно на этой демо-страничке [2], которая пытается обновлять график с частотой 60 кадров в секунду. На логарифмической шкале в миллисекундах показано реальное время задержки между двумя кадрами. С отключенной инкрементальной сборкой мусора (javascript.options.mem.gc_incremental установлен в false) периодически возникают хорошо заметные задержки в 300 — 500 миллисекунд. Если инкрементальная сборка включена, задержки редко бывают выше 50 — 80 миллисекунд, что почти незаметно. Кроме того, следить за состоянием памяти и уборкой мусора можно с помощью дополнения MemChaser [3].

Работа над инкрементальной сборкой мусора началась больше года назад и сейчас идёт очень активно. В 17 и 18 версиях ожидается дальнейшее улучшение характеристик сборщика мусора. Кстати, отзывчивости браузера Firefox посвящён отдельный раздел [4] на сайте MozillaWiki, где собрана воедино вся информация, касающаяся воспринимаемой скорости, задержек и подвисаний Firefox.

Источник — blogs.mozilla.org/javascript [5].

Автор: ilya42


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/14521

Ссылки в тексте:

[1] инструкция для Ubuntu: http://ubuntuguide.net/install-firefox-15-beta-in-ubuntu-12-0411-1011-0410-04

[2] демо-страничке: http://people.mozilla.org/~wmccloskey/incremental-blog/example-pause.html

[3] MemChaser: https://addons.mozilla.org/en-us/firefox/addon/memchaser/

[4] отдельный раздел: https://wiki.mozilla.org/Performance/Snappy

[5] blogs.mozilla.org/javascript: https://blog.mozilla.org/javascript/2012/08/28/incremental-gc-in-firefox-16/