Автоматическое определение утечек памяти с помощью Puppeteer
Кристоф Гуттандин рассказал про то, как он тестирует свою библиотеку на утечки памяти с помощью Puppeteer — "Automatically detect memory leaks with Puppeteer".
Для получения информации о потребляемой памяти в Puppeteer можно использовать метод metrics()
. Кристофу этот способ не подошёл. Проблема в том, что для получения воспроизводимых результатов, надо перед запуском теста вызывать сборку мусора, что не всегда получается сделать. Плюс, когда начинает работать оптимизатор v8, потребляемая память может непредсказуемо измениться и тесты будут моргать.
В итоге, автор остановился на варианте с queryObjects()
. С помощью него можно подсчитать количество всех объектов в heap, у которых в цепочке прототипов, содержится переданный в качестве аргумента объект (queryObjects()
также доступен из консоли chrome dev tools).
На ум пришёл ещё такой способ использования queryObjects()
. Если есть подозрение, что текут объекты с определённым прототипом, запрашиваем количество объектов с помощью queryObjects()
в консоли браузера до и после проблемного кода и сравниваем. В общем, статья полезная. Советую почитать.
https://media-codings.com/articles/automatically-detect-memory-leaks-with-puppeteer