Фреймворк был создан для разбора причин большого потребления памяти при работе с web-сайтами и web-приложениями. Например, с помощью memlab проводился анализ потребления памяти при использовании новой версии сайта Facebook.com, который позволил выявить утечки, приводившие к аварийному завершению браузера на стороне клиента из-за исчерпания свободной памяти.
Причинами утечек памяти при выполнении JavaScript-кода может быть наличие скрытых ссылок на объекты, из-за которых сборщик мусора не может высвободить занимаемую объектом память, неразумное кэширование значений или реализация бесконечной прокрутки без вытеснения старых элементов списка. Например в нижеприведённом коде в Chrome утечка памяти возникает из-за объекта «obj», несмотря на то, что ему присваивается значение null, так как Chrome сохраняет внутренние ссылки на выводимые объекты для предоставления возможности их последующего инспектирования в web-консоли.
var obj = {}; console.log(obj); obj = null;
Основные возможности memlab:
- Выявление утечек памяти в браузере. Memlab позволяет автоматически сравнивать слепки состояния динамической памяти, выявлять утечки памяти и агрегировать результаты.
- Объектно-ориентированный API для перебора кучи, позволяющий воплощать собственные алгоритмы выявления утечек и реализовывать системы анализа слепков состояния кучи. Поддерживается анализ кучи для браузеров на основе движка Chromium, а также для платформ Node.js, Electron и Hermes.
- Интерфейс командной строки и API для поиска возможностей по оптимизации использования памяти.
- Система assert-ов для Node.js, позволяющая создавать unit-тесты и выполнять программы на базе Node.js для создания срезов собственного состояния, проверки своей памяти или написания расширенных assert-проверок.
Источник: http://www.opennet.ru/opennews/art.shtml?num=57802