Выгружать из памяти неиспользуемые вкладки yandex что это

Обновлено: 04.07.2024

Многие из нас не представляют себе работу в сети без использования вкладок. Они помогают хранить интересные материалы, держать под рукой важную информацию, работать, следить за почтой, переписываться в социальных сетях. Неудивительно, что у многих пользователей одновременно может быть открыто несколько десятков вкладок. И каждый раз, когда они перезапускают браузер, все эти страницы начинают загружаться заново. И чем больше вкладок было открыто, тем дольше приходится ждать полной загрузки. Да и система при этом испытывает серьезную нагрузку, что может приводить к проблемам в работе других программ и излишнему потреблению энергии аккумулятора ноутбука. Так это работает во многих сторонних браузерах. Но не в Яндекс.Браузере.

Чтобы помочь тем пользователям, которые привыкли работать с большим количеством вкладок, наша команда еще два года назад оптимизировала запуск Браузера. Как именно это работает?

1. Яндекс.Браузер при старте загружает не все вкладки, а только те, которые использовались недавно. Причем их количество интеллектуально ограничено как лимитом в 10 вкладок, так и объемом доступной памяти (на тот случай, если памяти не хватает даже для 10). Все остальные вкладки будут подгружены после явного клика пользователя. Это позволяет сэкономить потребление ресурсов и ускорить запуск браузера в целом.

2. Одновременная загрузка 10 тяжелых сайтов может привести к тому, что все системные ресурсы будут заняты браузером, и на работу сторонних программ их просто не останется. Поэтому Браузер не просто загружает только последние активные вкладки, но и делает это последовательно. В результате нагрузка распределяется равномерно.

3. Конечно же, мы не забыли про закрепленные вкладки. Если вы закрепили сайт, то он важен для вас. Поэтому все закрепленные вкладки будут загружены в любом случае.

Полезна ли эта логика для вашей работы? Хотели бы вы что-то изменить или добавить? Нам было бы интересно обсудить это с сообществом пользователей.

Когда браузерам не хватает памяти, они выгружают из нее наиболее старые вкладки. Это раздражает, потому что клик по такой вкладке приводит к принудительной перезагрузке страницы. Сегодня мы расскажем читателям Хабра о том, как команда Яндекс.Браузера решает эту проблему с помощью технологии Hibernate.

Браузеры, основанные на Chromium, создают по процессу на каждую вкладку. У этого подхода множество достоинств. Это и безопасность (изоляция сайтов друг от друга), и стабильность (падение одного процесса не тянет за собой весь браузер), и ускорение работы на современных процессорах с большим количеством ядер. Но есть и минус – более высокое потребление оперативной памяти, чем при использовании одного процесса на всё. Если бы браузеры ничего с этим не делали, то их пользователи постоянно видели бы что-то подобное:


В проекте Chromium борются с потреблением памяти фоновыми вкладками с помощью очистки различных кэшей. Речь не про тот кэш, в котором хранятся картинки загруженных страниц. С ним проблем нет – он живет на жестком диске. В современном браузере много другой закэшированной информации, которая хранится в оперативной памяти.

Также в Chromium уже достаточно давно работают над тем, чтобы останавливать JS-таймеры в фоновых вкладках. Иначе очистка кэшей теряет смысл, т.к. активности в фоновых вкладках их восстанавливают. Считается, что если сайты хотят работать в фоне, то нужно использовать service worker, а не таймеры.

Если эти меры не помогают, то остается только одно – выгрузить из памяти весь процесс рендеринга вкладки. Открытый сайт просто перестает существовать. Если переключиться на вкладку, то начнется загрузка из сети. Если во вкладке было видео на паузе, то оно начнет проигрываться с начала. Если на странице заполнялась форма, то введенная информация может быть утеряна. Если во вкладке работало тяжелое JS-приложение, то понадобится запустить его заново.

Проблема выгрузки вкладок особенно неприятна при отсутствии доступа к сети. Отложили вкладку с Хабром для чтения на борту самолета? Будьте готовы, что полезная статья превратится в тыкву.

Разработчики браузеров понимают, что эта крайняя мера вызывает раздражение у пользователей (достаточно обратиться к поиску, чтобы оценить масштабы), поэтому применяют ее в последний момент. В этот момент компьютер уже тормозит из-за нехватки памяти, пользователи это замечают и ищут альтернативные способы решения проблемы, поэтому, к примеру, у расширения The Great Suspender более 1,4 млн пользователей.

Люди хотят, чтобы браузеры и память экономили, и тормозить при этом не начинали. Для этого вкладки нужно выгружать не в последний момент, а чуть раньше. А для этого нужно перестать терять содержимое вкладок, т.е. сделать процесс экономии незаметным. Но на чем тогда экономить? Круг замкнулся. Но решение нашлось.

Hibernate в Яндекс.Браузере

Наша команда участвует в разработке проекта Chromium, куда отправляет значительные оптимизирующие правки и новые возможности. Ещё в 2015 году мы обсуждали с коллегами из проекта идею сохранения состояния вкладок на жесткий диск и даже успели внести ряд доработок, но это направление в Chromium решили заморозить. Мы решили иначе и продолжили разработку в Яндекс.Браузере. На это ушло больше времени, чем планировали, но это того стоило. Чуть ниже мы расскажем о технической начинке технологии Hibernate, а пока начнем с общей логики.

Несколько раз в минуту Яндекс.Браузер проверяет количество доступной памяти, и если ее меньше, чем пороговое значение в 600 мегабайт, то в дело вступает Hibernate. Всё начинается с того, что Браузер находит наиболее старую (по использованию) фоновую вкладку. Кстати, в среднем у пользователя открыто 7 вкладок, но у 5% их более 30.

Выгружать из памяти любую старую вкладку нельзя – можно сломать что-то действительно важное. Например, воспроизведение музыки или общение в веб-мессенджере. Таких исключений сейчас 28. Если вкладка не подошла хотя бы по одному из них, то Браузер переходит к проверке следующей.

Если найдена вкладка, которая удовлетворяет требованиям, то начинается процесс ее сохранения.

Сохранение и восстановление вкладок в Hibernate

Любую страницу можно условно разделить на две большие части, связанные с движками V8 (JS) и Blink (HTML/DOM). Рассмотрим небольшой пример:

У нас есть некоторое DOM-дерево и небольшой скрипт, который просто добавляет div в body. С точки зрения Blink, эта страница выглядит примерно так:


Давайте посмотрим на связь между Blink и V8 на примере HTMLBodyElement:


Можно заметить, что Blink и V8 имеют разные представления одних и тех же сущностей и тесно связаны друг с другом. Так мы пришли к первоначальной идее – сохранять полное состояние V8, а для Blink хранить лишь HTML-атрибуты в виде текста. Но это было ошибкой, потому что мы потеряли те состояния DOM-объектов, которые хранились не в атрибутах. А еще потеряли состояния, которые хранились не в DOM. Решением этой проблемы было полное сохранение Blink. Но не всё так просто.

Для начала нужно собрать информацию об объектах Blink. Поэтому в момент сохранения V8 мы не только останавливаем JS и делаем его слепок, но и собираем в памяти ссылки на DOM-объекты и прочие вспомогательные объекты, доступные для JS. Мы также проходим по всем объектам, до которых можно дотянуться из объектов Document – корневых элементов каждого фрейма страницы. Так мы собираем информацию обо всем, что важно сохранить. Остается самое сложное – научиться сохранять.

Если посчитать все классы Blink, которые представляют DOM-дерево, а также разные HTML5 API (например, canvas, media, geolocation), то получим тысячи классов. Практически невозможно написать руками логику сохранения всех классов. Но хуже всего то, что даже если так сделать, то это будет невозможно поддерживать, потому что мы регулярно подливаем новые версии Chromium, которые вносят неожиданные изменения в любой класс.

Наш Браузер для всех платформ собирается с помощью clang. Чтобы решить задачу сохранения классов Blink, мы создали плагин для clang, который строит AST (абстрактное синтаксическое дерево) для классов. Например, вот этот код:

Превращается в такой XML:

Дальше другие написанные нами скрипты генерируют из этой информации код на C++ для сохранения и восстановления классов, который и попадает в сборку Яндекс.Браузера.

Код сохранения на C++, полученный скриптом из XML

Всего у нас генерируется код примерно для 1000 классов Blink. Например, мы научились сохранять такой сложный класс как Canvas. В него можно рисовать из JS-кода, задавать множество свойств, устанавливать параметры кисточек для рисования и так далее. Мы сохраняем все эти свойства, параметры и саму картинку.

После успешного шифрования и сохранения всех данных на жесткий диск процесс вкладки выгружается из памяти до тех пор, пока пользователь не вернется на эту вкладку. В интерфейсе, как и раньше, она никак не выделяется.

Восстановление вкладки происходит не мгновенно, но существенно быстрее, чем при загрузке из сети. Тем не менее мы пошли на хитрый ход, чтобы не раздражать пользователей вспышками белого экрана. Мы показываем скриншот страницы, созданный на этапе сохранения. Это помогает сгладить переход. В остальном процесс восстановления похож на обычную навигацию с той лишь разницей, что Браузер не делает сетевой запрос. Он воссоздает структуру фреймов и DOM-деревья в них, а затем подменяет состояние V8.

Записали видео с наглядной демонстрацией того, как Hibernate выгружает и восстанавливает по клику вкладки с сохранением прогресса в JS-игре, введенного в формах текста и положения видео:

Итоги

В ближайшее время технология Hibernate станет доступна всем пользователям Яндекс.Браузера для Windows. Мы также планируем начать экспериментировать с ней в альфа-версии для Android. С ее помощью Браузер экономит память более эффективно, чем раньше. К примеру, у пользователей с большим числом открытых вкладок Hibernate в среднем экономит более 330 мегабайт памяти и не теряет при этом информацию во вкладках, которая остается доступна в один клик при любом состоянии сети. Мы понимаем, что вебмастерам было бы полезно учитывать выгрузку фоновых вкладок, поэтому планируем поддержать Page Lifecycle API.

Hibernate – не единственное наше решение, направленное на экономию ресурсов. Мы не первый год работаем над тем, чтобы Браузер адаптировался под имеющиеся в системе ресурсы. К примеру, на слабых устройствах Браузер переходит в упрощенный режим, а при отключении ноутбука от источника питания – снижает энергопотребление. Экономия ресурсов – большая и сложная история, к которой мы еще обязательно вернемся на Хабре.

По рекомендации от Яндекса нам предлагается на время отключить:


  1. Дополнения. Сделать это можно на странице Дополнения (чтобы перейти туда, нажмите кнопку Настройки браузера Yandex в правом верхнем углу). Выставив переключатель в соответствующий статус. Оставляйте только необходимое. Помните - минимализм, залог быстрой работы.
  2. Турбо-режим. При нем происходит сжатие страниц на серверах Яндекса и часто, на слабых каналах, из-за компрессии получается приличная прибавка в скорости, т.к. трафика передается меньше. Но из-за появления посредника, в виде серверов Яндекса, при передаче пакетов от сайта к пользователю, маршрут меняется и информация может идти дольше по времени.

Но проверить стоит, повлияет ли отключение режима Турбо на работу Яндекс браузера

Windows 7, Windows 8 — C:\Пользователи\Имя вашей учетной записи\AppData\Local\Yandex\YandexBrowse r\User Data\Default\Cache

Windows XP — C:\Documents and Settings\Имя вашей учетной записи\Local Settings\Application Data\Yandex\YandexBrowser\User Data\Default\Cache

Windows Vista — C:\Users\Имя вашей учетной записи\AppData\Local\Yandex\YandexBrowse r\User Data\Default\Cache

Откройте данную папку и оцените ее объем.

При большом кэше, данная операция по очистке вполне может помочь убрать подтормаживания.

Хорошие рекомендации от Яндекса, но этого явно не достаточно. Тормозить работу могут и другие проблемы.

Настройки браузера Yandex - Настройки - Показать дополнительные настройки - Защита личных данных. Выставляйте галочки как на скриншоте Стоит отдельно сказать, что отключение пунктов


  • Предсказывать действия пользователя для ускорения загрузки страниц - поможет сэкономить трафик и снимет лишнюю нагрузку с браузера.
  • Включить защиту от фишинга и вредоносных программ - для защиты у большинства пользователей установлен антивирус. Нагружать еще и такой работой браузер - на это нужно иметь основания. Выключаем. К тому же скорость показа страниц увеличится.
  • Пункты по отправке Яндексу статистики, отчетов и файлов - можете оставить на свое усмотрение, но я бы отключил.

  • Разрешить приложениям работать в фоновом режиме после закрытия браузера - думаю тут понятно, что дополнения будут работать и после выхода из Яндекс браузера. Т.е. они могут показывать оповещения, проверять почту и другое. Рекомендуется отключить.
  • Использовать аппаратное ускорение, если можно - Если при просмотре видео или флеша (ссылка), наблюдаются тормоза и оно проигрывается рывками, попробуйте поиграться с этим параметром. Если проблем не наблюдается, то лучше его не включать.
  • Выгружать из памяти не используемые вкладки - для любителей держать большое количество открытых вкладок, включение данной функции обязательно.

Использование некоторых из них, вполне может помочь убрать подтормаживания.

Если ничего не помогло, то обратите внимание на экспериментальные функции.

Для их просмотра, в адресной строке наберите - browser://flags

Возможно применение всех рекомендаций, поможет убрать тормоза на таком не плохом браузере.

яндекс браузер

Начиная с 2018 года потребление ресурсов оперативной памяти компьютера разными браузерами стало расти. В настоящее время, на таких “гигантах” как Яндекс и Гугл, оно увеличилось в 3 раза! Раньше движок браузера потреблял меньше 200 Мб, сейчас около 600 Мб. Открытая вкладка “ела” 50 Мб, сейчас от 100 до 200 Мб.

Посчитаем возможности компьютера с оперативной памятью 4 Гб:

  • Установленная Виндовс забирает свой положенный 1 Гб.
  • Яндекс - 600 Мб.
  • Гугл - 600 Мб.
  • антивирус - 100 Мб.

Остаётся 1.7 Гб. Это примерно 9 открытых вкладок по 200 Мб. При попытке открыть десятую, начнётся торможение и зависание. И скорее всего, вы увидите уведомление о нехватки памяти.

Мы ещё не считаем открытых программ, таких как Ворд или Фотошоп.

Ну вот примерно как-то так. Грубо конечно, но посчитать можно.

Причины

Итак, как мы видим из расчёта, самой главной причиной является маленький объём оперативной памяти компьютера или ноутбука. Меньше 4 Гб. Но если оперативная память от 4 Гб и выше, то возможны следующие причины:

  • Открыты одновременно несколько браузеров: Яндекс, Гугл, Опера.Закройте неиспользуемые браузеры.
  • Открыто много вкладок. Закройте ненужные в данный момент вкладки.
  • Заполнен до предела жёсткий диск. Почистите диск. Удалите или перенесите на другой носитель программы,фильмы, музыку и прочее.
  • Вирус “отжирает” часть памяти. Установите антивирус и запустите проверку.

Также можно просто купить и установить на материнскую плату оперативную память большей вместимости.

Это самые простейшие способы. Но есть посложнее. Рассмотрим их.

Настройка Яндекса

Для облегчения работы этого браузера применим некоторые настройки.

На открытой странице Яндекса в правом верхнем углу под вкладкой с 3 горизонтальными полосками при нажатии появляется список функций. Кликаем по Настройке.

браузер яндекса

В колонке справа выбираем Системные.

Перед нами раздел Производительность. Ставим галочки в пункты:

  1. Оптимизировать изображения для экономии оперативной памяти. Качество изображений падает, но не сильно. Нам пойдёт!
  2. Выгружать из памяти неиспользуемые вкладки. Вкладки не закрываются, но и не занимают место в оперативной памяти. При нажатии на них несколько секунд придётся подождать, пока откроются. Но это не критично!

Очистка диска

В процессе работы на диске скапливается довольно много всякого мусора: временные файлы, ошибки и другие отбросы жизнедеятельности компьютера. Всё это замедляет работу системы. Для ускорения работы нужно очистить диск. В Виндовс такая программа есть под названием очистка диска.

очистка диска

Чтобы её запустить надо:

  • Нажать на флажок логотипа в левом нижнем углу экрана. Появляется список программ в алфавитном порядке.
  • Под буквой “С” находим Средства администрирования. Справа размещена стрелочка вниз \/ ( вкладка). Кликаем.
  • Видим дополнительный список и жмём Очистка диска.
  • Программа производит анализ файлов и показывает табличку, что она хочет удалить. Нажимаем “ОК”.
  • Дальше очищаем системные файлы. В появившейся табличке нажимаем Очистить системные файлы. Для этого нужно обладать правами администратора.
  • Кликаем “ОК”, подтверждаем дополнительно.

От мусора избавились.

Ccleaner

Если вы случайно скачали программу на английском языке, ничего страшного. Делайте так:

  • Запускайте программу.
  • Слева внизу options (с шестерёнкой).
  • Settings.
  • Language, нажимайте вкладку.
  • Выпадает список языков. Выбираем Russian.

Ccleaner

Теперь интерфейс русский.

В этой программе много возможностей по чистке. Не буду их перечислять. Там и так всё понятно, если посмотреть. Пользуйтесь наздоровье!

Файл подкачки

В Виндовс применяется такая интересная вещь как файл подкачки (pagefile.sys). Он является системным и служит “расширением” оперативной памяти компьютера, виртуальной памятью. Эта память может обеспечить работу программ, даже когда физическая память переполнена.

Во время работы Виндовс перемещает сюда временно не используемые файлы, освобождая тем самым место в физической памяти.

Настраиваем файл подкачки

  1. На рабочем столе щёлкаем по ярлыку Компьютер (computer) или по значку Папка на панели задач внизу экрана.
  2. В открывшемся окне слева находим вкладку Этоткомпьютер, наводим курсор и нажимаем правой кнопкой мыши.
  3. Во вкладке внизу жмём Свойства.
  4. В открывшейся Домашней странице выбираем Дополнительные параметры.
  5. В окне Свойствасистемы выбираем Дополнительно и в разделе Быстродействие запускаем Параметры.
  6. В Параметрах быстродействия выбираем Дополнительно. В разделе Виртуальная память - Изменить.

файл подкачки

Перед нами окно настройки файла подкачки. Их четыре:

  1. Автоматически выбирать объём файла подкачки - установлена по умолчании, не требует настроек.
  2. Без файла подкачки - отключение данной функции (не рекомендуется).
  3. Размер по выбору системы - система сама определяет на данном диске объём файла.
  4. Указать размер. Здесь расположены 2 окна: Исходный и Максимальный размеры. Самый спорный пункт в плане рекомендуемых значений. Существует множество мнений, какие значения нужно ставить. Единогласия нет.
Файл подкачки устанавливается для выбранного диска. Обычно на котором стоит система. Можно и для всех выбрать, если у вас их несколько.

Приведу некоторые рекомендации, а вы выберите, попробуйте, что пойдёт:

  • Исходный и максимальный размер должны быть равны, во избежания фрагментации файла подкачки, что приведёт к снижению производительности. В этом есть некоторый резон.
  • Файл по объёму должен быть в 2 раза больше оперативной памяти. У меня ОП=4 Гб. Файл поставил 8 Гб, компьютер стал тормозить. Не пошло.
  • Вычислением. Пример. Повключать разных программ, нагрузить оперативку по максимуму. Посмотреть значение, умножить его на 2 и отнять значение физической памяти. Допустим установленная память 4 Гб. Максимальная загрузка 3 Гб. Значит 3х2-4=2 Гб. Как то так.

Но это один из вариантов. А их много. У меня пока стоит 3074 Мб. Дальше посмотрю. Может поменяю.

Изменение кеша Яндекса

Все браузеры используют кэширование информации. Эта функция помогает экономить трафик и сокращает время загрузки веб-страниц, при повторном открытии.

По умолчании размер файла кэша Яндекса изменяется в зависимости от потребности. Опцию задания размера разработчики не посчитали нужным сделать. Но есть всё же способ его настроить.

Кэш

  • Создайте ярлык Яндекса на рабочем столе.
  • Наведите на него курсор мыши и кликните правой кнопкой мыши. Выберите Свойства.
  • В открывшемся окне нажимаем Ярлык.
  • В строке Объект написано :

- - C:\Users\ Asus\AppData\Local\Yandex\YandexBrowser\Applicatio n\

  • устанавливаем курсор в конце записи, после слов browser.exe, добавляем пробел и вставляем команду: --disk-cache-size=1073741824 Ничего не стираем. Иначе ярлык будет нерабочий.
  • Должна получиться такая запись:

browser.exe (пробел) --disk-cache-size=1073741824 (размер кэша в байтах, 1 Кб=1024 байта, 1Мб=1024Кб, 1Гб=1024Мб, получаем 1024 в кубе).

Если у вас несколько дисков, то чтобы разгрузить системный диск следует кэш перенести на другой. Для этого после размера кэша, через пробел следует вписать команду:

--disk-cache-dir="Путь" , где Путь это адрес, где будет находиться папка, например: --disk-cache-dir="D:\temp\Yandex"

Укажите свой диск и название папки.

Теперь заходя в браузер через этот ярлык у вас будет кэш равный 1 Гб.

Основные выводы

Теперь, когда вы познакомились с разными способами устранения нехватки памяти браузера, попробуйте устранить возникшую проблему. Я уверен у вас получится, потому что это способы, которые мне помогли.Теперь браузеры работают нормально, без зависаний.

Если вам что-то непонятно, возникли дополнительные вопросы, пишите их в комментариях. Я обязательно отвечу.

Читайте также: