Утечки памяти: забытая сторона веб-производительности Перевод
Это перевод нескольких абзацев статьи Ноланом Лоусоном про производительность от 5 января 2022 г. Полный текст статьи на английском языке. Мне статья показалась интересной.
Я исследовал и узнал достаточно об утечках памяти на стороне клиента, чтобы понять, что большинство веб-разработчиков не слишком беспокоятся о них. Если веб-приложение теряет 5 МБ при каждом взаимодействии, но оно все еще работает, и никто этого не замечает, имеет ли это значение?
Даже те, кто ковырялся в браузере DevTools, чтобы окунуться в загадочное искусство обнаружения утечек памяти, вероятно, нашли этот опыт… пугающим. Соотношение усилий и отдачи неутешительно велико, особенно по сравнению с сотнями других вещей, важных в веб-разработке, таких как безопасность и доступность.
Так действительно ли это стоит усилий? Имеют ли значение утечки памяти?
Я бы сказал, что они имеют значение, хотя бы потому, что невнимательность (о чем свидетельствует утечка до 186 МБ трафика из общедоступных SPA ) является признаком незрелости нашей области и возможностью для роста.
Точно так же пять лет назад авторы SPA гораздо меньше заботились о доступности, безопасности, производительности во время выполнения или даже о том, чтобы кнопка «Назад» сохраняла позицию прокрутки (или чтобы кнопка «Назад» работала вообще!). Сегодня я вижу гораздо больше обсуждений этих тем среди разработчиков SPA, и это отличный признак того, что наша область начинает относиться к нашему ремеслу более серьезно.
Так почему вы должны и почему не должны заботиться об утечках памяти? Очевидно, я предвзят, потому что у меня есть цель (и инструмент, который я написал fuite
), но позвольте мне попытаться дать беспристрастный взгляд.
Утечки памяти и программная инженерия
С точки зрения фактического влияния на бизнес веб-разработки, утечки памяти — забавная вещь. Если вы ускорите свой веб-сайт на 2 секунды, все согласятся, что это хорошая вещь с видимым воздействием на пользователей. Если вы уменьшите утечку памяти вашего веб-сайта на 2 МБ, можем ли мы согласиться с тем, что оно того стоило? Может быть нет.
Вот некоторые уникальные характеристики утечек памяти, которые я наблюдал, с точки зрения того, как они на самом деле вписываются в процесс веб-разработки.
Утечки памяти это:
- Низкое воздействие до критического
- Трудно диагностировать
- Тривиально исправить после диагностики
Низкое влияние…
Большинство веб-приложений могут терять память, и никто этого даже не заметит. Ни пользователь, ни автор сайта — никто. Для этого есть несколько причин.
Во-первых, браузеры прекрасно понимают, что веб — это дырявый беспорядок, и уже безжалостно убивают фоновые вкладки, которые потребляют слишком много памяти.
Многие пользователи накапливают вкладки (по сути, используя вкладки в качестве закладок), и есть понимания между браузером и пользователем, что вы не можете реально иметь 100 открытых вкладок одновременно (в том смысле, что на вкладке активно работает и мгновенно доступной). Итак, вы нажимаете на вкладку, которой несколько недель, бум, во время загрузки страницы появляется вспышка белого цвета, и, похоже, никто не возражает.
Во-вторых, даже для долгоживущих SPA, которые пользователь может регулярно проверять (например, GMail, Evernote, Discord), существует множество возможностей для обновления страницы. Браузер нужно обновить. Пользователь не верит, что данные свежие, и нажимает F5.
В-третьих, это трагедия общества, и люди склонны винить в этом браузер. Хром пожирает память. Firefox жрет оперативную память. Сафари съедает всю мою память. По причинам, которые я не могу объяснить, люди с более чем 100 открытыми вкладками быстро обвиняют мессенджер.
…До критического
Что интересно, однако, так это то, что время от времени утечка памяти становится настолько серьезной, что люди действительно начинают ее замечать. Может быть, кто-то открывает диспетчер задач и удивляется, почему приложение для создания заметок потребляет больше оперативной памяти, чем DOTA.
Полная статья:
https://nolanlawson.com/2022/01/05/memory-leaks-the-forgotten-side-of-web-performance/
В Deezer по-прежнему утекает 10 МБ каждую минуту. Это делает его непригодным для использования, так как он слишком часто ломает вкладки.
Это продолжается уже много лет, и многие люди жалуются. Но вместо этого разработчики заняты ухудшением других вещей.
Хороший пример того, как это все еще очень актуально.