Facebook оприлюднив вихідний код memlab

facebook-memlab

MemLab — це платформа для пошуку витоків пам’яті JavaScript

Нещодавно новина про це заявила Facebook прийняв рішення опублікувати вихідний код набору інструментів memlab, який призначений для аналізу частин стану пам'яті динамічно виділеної (кучі), визначити стратегію оптимізації роботи з пам'яттю та виявити витоки пам'яті, які виникають, коли виконання коду JavaScript. 

Рамки було створено для аналізу причин високого споживання пам'яті при роботі з веб-сайтами та веб-додатками. Наприклад, memlab використовувався для аналізу споживання пам'яті під час використання нової версії сайту Facebook.com, яка виявила витоки, які спричинили збій клієнтського браузера через вичерпання вільної пам'яті.

Люди, які користуються нашими веб-додатками, часто відразу помічають проблеми з продуктивністю та функціональні виправлення. Однак втрата пам’яті – це зовсім інша історія. Це не відразу помітно, оскільки воно споживає одну частину пам’яті за раз, впливаючи на весь веб-сеанс і роблячи наступні взаємодії повільнішими та менш чуйними.

Щоб допомогти нашим розробникам вирішити цю проблему, ми створили MemLab, фреймворк тестування пам’яті JavaScript, який автоматизує виявлення витоків і полегшує пошук витоків пам’яті. Ми використовували MemLab на Meta для успішного стримування нестійкого зростання пам’яті та виявлення витоків пам’яті та можливостей оптимізації пам’яті в наших продуктах та інфраструктурі.

Велике використання пам’яті має статистично значущий і негативний вплив на завантаження сторінки та ефективність взаємодії (кількість часу потрібно для завантаження сторінки або виконання взаємодії)
Показники залучення користувачів (активні користувачі, час перебування на сайті, кількість виконаних дій)

Причини витоків пам'яті під час виконання коду JavaScript може бути наявність посилань на приховані об’єктиТак, що збирач сміття не може звільнити пам'ять зайняті об’єктом, необґрунтоване кешування значень або впровадження нескінченного прокручування без видалення старих елементів списку.

Наприклад, у наведеному нижче коді Chrome витік пам’яті відбувається через об’єкт «obj», навіть якщо для нього встановлено значення null, оскільки 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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.