Facebook пусна изходния код на memlab

facebook-memlab

MemLab е рамка за намиране на течове на памет на JavaScript

Наскоро новината съобщи това Facebook взе решение да пусне изходния код от комплекта инструменти memlab, кое е предназначен да анализира части от състоянието на паметта динамично разпределена (купчина), определяне на стратегия за оптимизиране на работата с памет и откриване на течове на памет, които възникват, когато изпълняване на JavaScript код. 

Рамката е създаден, за да анализира причините за високата консумация на памет при работа с уеб сайтове и уеб приложения. Например memlab беше използван за анализиране на потреблението на памет при използване на нова версия на сайта Facebook.com, което разкри течове, които причиниха срив на браузъра от страна на клиента поради изчерпване на свободната памет.

Хората, които използват нашите уеб приложения, често ще забележат проблеми с производителността и функционални корекции веднага. Загубата на памет обаче е различна история. Това не се забелязва веднага, защото консумира едно парче памет наведнъж, засягайки цялата уеб сесия и правейки последващите взаимодействия по-бавни и по-малко отзивчиви.

За да помогнем на нашите разработчици да се справят с това, ние създадохме MemLab, JavaScript рамка за тестване на паметта, която автоматизира откриването на течове и улеснява намирането на течове на памет. Използвахме MemLab на Meta, за да ограничим успешно неустойчивия растеж на паметта и да идентифицираме изтичане на памет и възможности за оптимизиране на паметта в нашите продукти и инфраструктура.

Голямото използване на памет има статистически значимо и отрицателно въздействие върху зареждането на страницата и ефективността на взаимодействие (колко време отнема зареждането на страница или извършването на взаимодействие)
Показатели за ангажираност на потребителите (активни потребители, време, прекарано на сайта, брой извършени дейности)

Причините за изтичане на памет при изпълнение на JavaScript код може да е наличието на препратки към скрити обекти, така че събирач на боклук не може да освободи памет заети от обекта, необосновано кеширане на стойности или прилагане на безкрайно превъртане без изгонване на стари елементи от списъка.

Например в следния код на Chrome изтичането на памет възниква поради обекта „obj“, въпреки че е зададен на нула, тъй като Chrome запазва вътрешни препратки към изобразените обекти, за да им позволи да бъдат инспектирани по-късно в уеб конзолата.

Основната операция на Memlab, е следното:

  1. Първо прави откриване на изтичане на памет в браузъра, Memlab ви позволява автоматично да сравнявате моментни снимки на динамична памет, да откривате изтичане на памет и да обобщавате резултатите.
  2. Обектно-ориентиран API за преминаване на купчина, който ви позволява да внедрите свои собствени алгоритми за откриване на течове и да внедрите системи за анализиране на моментни снимки на купчина. Разборът на купчина се поддържа за браузъри, базирани на двигателя Chromium, както и за платформите Node.js, Electron и Hermes.
  3. Интерфейс на командния ред и API за намиране на възможности за оптимизиране на използването на паметта.
  4. Система за твърдения за Node.js, която ви позволява да създавате единични тестове и да изпълнявате базирани на Node.js програми, за да разделите собственото си състояние, да тествате паметта си или да пишете разширени твърдения.
  5. Групиране на проследяване на задържане, MemLab групира всички следи на задържане заедно и показва проследяване за всяка група филтрирани обекти, които споделят подобни следи на задържане. Проследяването също така включва информация за отстраняване на грешки, като доминиращи възли и запазени размери.
  6. Чрез докладване на течове, MemLab може да се стартира на редовни интервали през целия ден, за да получава непрекъснат сигнал за регресии на паметта. Всички нови регресии се добавят към вътрешно табло за управление, където обединените следи за задържане на всички открити течове на памет се събират и класифицират. След това разработчиците могат да щракнат и да видят свойствата на обекта в задържаната следа за всяко изтичане на памет.

Накрая ако се интересувате, трябва да знаете, че кодът на Memlab е с отворен код под лиценза на MIT и можете да научите повече за него В следващия линк.


Съдържанието на статията се придържа към нашите принципи на редакторска етика. За да съобщите за грешка, щракнете върху тук.

Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван.

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.