Устранение проблем с памятью
Узнайте, как использовать Microsoft Edge и Средства разработки для поиска проблем с памятью, влияющих на производительность страницы, включая утечки памяти, раздутие памяти и частые сборки мусора.
- Узнайте, какой объем памяти используется вашей страницей в диспетчере задач браузера Microsoft Edge.
- Визуализируйте использование памяти с течением времени с помощью средства «Память «.
- Определите отсоединяемые деревья DOM (распространенная причина утечки памяти) с помощью snapshot Куча.
- Узнайте, когда выделяется новая память в куче JavaScript (кучи JS) с помощью инструментирования выделения на временная шкала.
Обзор
В духе модели производительности RAIL основное внимание должно уделяться вашим пользователям.
Проблемы с памятью важны, так как они часто могут восприниматься пользователями. Пользователи могут воспринимать проблемы с памятью следующими способами:
- Со временем производительность страницы постепенно ухудшается. Возможно, это является симптомом утечки памяти. Утечка памяти — это когда ошибка на странице приводит к тому, что страница постепенно использует все больше памяти с течением времени.
- Производительность страницы постоянно плоха. Возможно, это симптом раздутого объема памяти. Раздутие памяти — это когда страница использует больше памяти, чем необходимо для оптимальной скорости страницы.
- Производительность страницы задерживается или часто приостанавливается. Возможно, это симптом частой сборки мусора. Сборка мусора — это когда браузер освобождает память. Браузер решает, когда это произойдет. Во время коллекций все выполняемые скрипты приостанавливаются. Таким образом, если браузер собирает много мусора, среда выполнения скрипта будет приостановлена.
Раздутие памяти: сколько «слишком много»?
Утечку памяти легко определить. Если сайт постепенно использует все больше и больше памяти, значит, у вас есть утечка. Но раздутие памяти немного сложнее закрепить. Что квалифисируется как «использование слишком большого объема памяти»?
Здесь нет жестких чисел, так как разные устройства и браузеры имеют разные возможности. Та же страница, которая работает гладко на высококлассном смартфоне может разрезаться на низом смартфоне.
Здесь важно использовать модель RAIL и сосредоточиться на пользователях. Узнайте, какие устройства популярны среди пользователей, а затем протестируйте страницу на этих устройствах. Если взаимодействие постоянно плохое, страница может превысить возможности памяти этих устройств.
Мониторинг использования памяти в режиме реального времени с помощью диспетчера задач браузера Microsoft Edge
Используйте диспетчер задач браузера Microsoft Edge в качестве отправной точки для исследования проблем с памятью. Диспетчер задач браузера Microsoft Edge — это монитор в реальном времени, который сообщает, сколько памяти использует страница в данный момент.
- Нажмите клавиши SHIFT+ESC или перейдите в меню Microsoft Edge main и выберите Дополнительные инструменты>Диспетчер задач браузера, чтобы открыть диспетчер задач браузера Microsoft Edge.

- Щелкните правой кнопкой мыши заголовок таблицы диспетчера задач браузера Microsoft Edge и включите память JavaScript.

Эти два столбца по-разному сообщают о том, как ваша страница использует память:
- Столбец Память представляет собственную память. Узлы DOM хранятся в собственной памяти. Если это значение увеличивается, создаются узлы DOM.
- Столбец Память JavaScript представляет кучу JS. Этот столбец содержит два значения. Интересующее вас значение — это живой номер (число в скобках). Динамическое число показывает, сколько памяти используют доступные объекты на странице. Если это число увеличивается, создаются новые объекты или растут существующие объекты.
Визуализация утечек памяти с помощью средства «Производительность»
Вы также можете использовать средство «Производительность » в качестве еще одной отправной точки в исследовании. Средство «Производительность » помогает визуализировать использование памяти страницы с течением времени.
- В средствах разработки откройте средство Производительность .
- Установите флажок Память .
- Сделать запись.
![]()
Рекомендуется начинать и завершать запись принудительной сборкой мусора. Чтобы принудительная сборка мусора, нажмите кнопку сборки мусора при принудительном во время записи.
Чтобы продемонстрировать записи памяти, рассмотрите следующий код:
var x = []; function grow() < for (var i = 0; i < 10000; i++) < document.body.appendChild(document.createElement('div')); >x.push(new Array(1000000).join('x')); > document.getElementById('grow').addEventListener('click', grow);
При каждом нажатии кнопки, на которую ссылается код, к тексту документа добавляется 10 000 div узлов, а в массив помещается x строка из 1000 000 x символов. При выполнении предыдущего примера кода в средстве производительности создается запись, как показано на следующем рисунке:

Во-первых, объяснение пользовательского интерфейса. Диаграмма HEAP в области Обзор (под NET) представляет кучу JS. Под панелью Обзор находится панель Счетчик . Использование памяти разбивается по куче JS (аналогично диаграмме HEAP в области обзор ), документам, узлам DOM, прослушивателям и памяти GPU. Снимите флажок, чтобы скрыть его от графа.
Теперь анализ кода сравнивается с предыдущим рисунком. Если вы просмотрите счетчик узла (зеленый график), он будет точно совпадать с кодом. Число узлов увеличивается в дискретных шагах. Можно предположить, что каждое увеличение числа узлов является вызовом grow() .
![]()
Диаграмма кучи JS (синий граф) не так проста. В соответствии с рекомендациями первым падением на самом деле является принудительная сборка мусора (нажмите кнопку сборки мусора ).
По мере выполнения записи отображаются пики размера кучи JS. Это естественно и ожидаемо: код JavaScript создает узлы DOM при каждой нажатии кнопки и выполняет большую работу при создании строки из миллиона символов.
Ключевым моментом здесь является тот факт, что куча JS заканчивается выше, чем она началась («начало» здесь является точкой после принудительной сборки мусора). В реальном мире, если вы видите эту схему увеличения размера кучи JS или размера узла, это может указывать на утечку памяти.
Обнаружение отсоединяемых утечек памяти дерева DOM с помощью моментальных снимков кучи
Memory tool > Help-mode tooltip to this section; would default to top of article instead of this section anchor —>
Узел DOM собирается только при отсутствии ссылок на узел из дерева DOM или кода JavaScript, выполняемого на странице. При удалении из дерева DOM узел считается «отсоединяется», но некоторые javaScript по-прежнему ссылаются на него. Отсоединяемые узлы DOM являются распространенной причиной утечек памяти.
В этом разделе описано, как использовать профилировщики кучи в средствах разработки для идентификации отсоединяемых узлов.
Ниже приведен простой пример отсоединяемых узлов DOM:
var detachedTree; function create() < var ul = document.createElement('ul'); for (var i = 0; i < 10; i++) < var li = document.createElement('li'); ul.appendChild(li); >detachedTree = ul; > document.getElementById('create').addEventListener('click', create);
При нажатии кнопки, указанной в коде, создается узел с десятью ul li дочерними элементами. На узлы ссылается код, но они не существуют в дереве DOM, поэтому каждый узел отсоединяется.
Моментальные снимки кучи — это один из способов идентификации отсоединяемых узлов. Как следует из названия, моментальные снимки кучи показывают, как память распределяется между объектами JS и узлами DOM для страницы в момент snapshot.
Чтобы создать snapshot, выполните приведенные далее действия.
- Откройте DevTools и перейдите к средству «Память «.
- Нажмите переключатель Куча snapshot, а затем нажмите кнопку Принять snapshot в нижней части средства.
Обработка и загрузка snapshot может занять некоторое время. - После завершения snapshot выберите его на панели слева (он называется HEAP SNAPSHOTS).
- В текстовом поле Фильтр классов введите Detached , чтобы найти отсоединяемые деревья DOM:

- Разверните караты, чтобы исследовать отдельное дерево:

- Щелкните узел, чтобы исследовать его дальше. В области Объекты можно просмотреть дополнительные сведения о коде, который ссылается на узел. Например, на следующем рисунке detachedTree переменная ссылается на узел.
- Чтобы устранить конкретную утечку памяти, изучите код, использующий detachedTree переменную, и убедитесь, что ссылка на узел удаляется, когда она больше не нужна.

Выявление утечек памяти кучи JS с помощью инструментирования выделения на временная шкала
Инструментирование выделения на временная шкала — это еще одно средство, которое может помочь вам отслеживать утечки памяти в куче JS.
Продемонстрировать инструментирование выделения на временная шкала с помощью следующего кода:
var x = []; function grow() < x.push(new Array(1000000).join('x')); >document.getElementById('grow').addEventListener('click', grow);
При каждом нажатии кнопки, на которую ссылается код, в массив добавляется x строка из миллиона символов.
Чтобы записать инструментирование выделения на временная шкала:
- Откройте DevTools и выберите средство «Память «.
- Щелкните переключатель Инструментирование выделения на временная шкала, а затем нажмите кнопку Пуск.
- Выполните действие, которое, как вы подозреваете, вызывает утечку памяти.
- По завершении нажмите кнопку Остановить запись кучи, чтобы
. - При записи обратите внимание, отображаются ли синие полосы на инструментировании выделения на временная шкала, как показано на следующем рисунке:
Эти синие полосы представляют собой новые выделения памяти. Эти новые выделения памяти являются вашими кандидатами на утечку памяти. - Увеличьте масштаб панели, чтобы отфильтровать область конструктора , чтобы отобразить только объекты, выделенные в течение указанного периода времени.

- Разверните объект и выберите значение, чтобы просмотреть дополнительные сведения в области Объект . Например, на следующем рисунке в сведениях о новом выделенном объекте указывается, что он был выделен переменной x Window в область:

Исследование выделения памяти по функциям
Используйте тип профилирования выборки выделения для просмотра выделения памяти с помощью функции JavaScript.

- Нажмите переключатель Выборка выделения .
- Если на странице есть рабочая роль, ее можно выбрать в качестве целевого объекта профилирования с помощью раскрывающегося меню рядом с кнопкой Пуск .
- Нажмите кнопку Пуск .
- На веб-странице выполните действия, которые нужно исследовать.
- Нажмите кнопку Остановить , когда все действия будут завершены.
DevTools показывает разбивку распределения памяти по функциям. По умолчанию используется представление Heavy (Bottom Up), в котором отображаются функции, которые выделяют большую часть памяти в верхней части.

Уменьшение мусора с помощью дополнительных параметров для выборки выделения
По умолчанию тип профилирования выборки выделения сообщает только о выделениях, которые по-прежнему активны в конце сеанса записи. Объекты, которые создаются, удаляются, а затем собираются мусором (GC’d), не отображаются в средстве «Память» при профилировании с помощью выборки выделения или инструментирования выделения для типов временная шкала.
Вы можете доверять браузеру для очистки мусора из кода. Однако важно учитывать, что GC сама по себе является дорогостоящей операцией, и несколько GCs могут замедлить взаимодействие пользователя с вашим веб-сайтом или приложением. При записи в инструменте Производительность с включенным флажком Память можно увидеть, как операция сборки мусора выполняется на крутых скалах (внезапное уменьшение) в диаграмме кучи.

Уменьшая объем мусора, создаваемого кодом, вы можете снизить затраты на каждую отдельную сборку мусора и количество операций сборки мусора. Чтобы отслеживать объекты, отбрасываемые GC, настройте тип профилирования выборки выделения с параметрами.

- Нажмите кнопку Выборка выделения .
- Выберите параметры Включить объекты, отброшенные основными сборками мусора , и Включить объекты, отброшенные дополнительными объектами сборки мусора .
- Нажмите кнопку Пуск .
- На веб-странице выполните действия, которые нужно исследовать.
- Нажмите кнопку Остановить , когда все действия будут завершены.
DevTools теперь отслеживает все объекты, которые были GC во время записи. Используйте эти параметры, чтобы понять, сколько мусора генерируется веб-сайтом или приложением. Данные, передаваемые выборкой выделения , помогут определить функции, которые создают больше всего мусора.
Если вы исследуете объекты, которые были только GC во время определенных крупных или незначительных операций сборки мусора, настройте параметры соответствующим образом, чтобы отслеживать нужную операцию. Дополнительные сведения о различиях между основными и дополнительными сборками мусора см. в статье Мусорное обсуждение: сборщик мусора Orinoco | Блог разработчика обработчика JavaScript версии 8.
Обнаружить частые сборки мусора
Если страница часто приостанавливается, могут возникнуть проблемы со сборкой мусора.
Для обнаружения частой сборки мусора можно использовать либо диспетчер задач браузера Microsoft Edge, либо записи памяти производительности.
- В диспетчере задач браузера Microsoft Edge часто растущие и выпадающие значения памяти или памяти JavaScript представляют собой частую сборку мусора.
- В записях производительности частые изменения (рост и падение) в диаграммах кучи JS или числа узлов указывают на частую сборку мусора.
Определив проблему, можно использовать инструментирование выделения для записи временная шкала, чтобы узнать, где выделяется память и какие функции вызывают выделение.
Некоторые части этой страницы представляют собой измененные материалы, созданные и предоставленные корпорацией Google. Их использование регулируется условиями, описанными в лицензии Creative Commons Attribution 4.0 International License. Исходная страница находится здесь и автор Kayce Basques (Технический писатель, Chrome DevTools & Lighthouse).
Эта работа лицензируется по международной лицензии Creative Commons Attribution 4.0.
Как исправить ошибку SBOX_FATAL_MEMORY_EXCEEDED в Chrome, Edge и Opera?
При серфинге в браузерах на базе Chromium (Chrome, Edge, Opera и прочих) иногда не удается посетить некоторые сайты из-за ошибки Aw Snap – SBOX_FATAL_MEMORY_EXCEEDED. Узнаем причины возникновения этой ошибки и способы ее исправления.

Вы, вероятно, уже заметили, что сбои Aw Snap чаще возникают на таких сайтах, как Facebook, YouTube, Tumblr и требуют перезагрузки станицы. Но после обновления, даже с использованием сочетания клавиш Ctrl+F5 (сброса кэшируемых данных), они в основном остаются. Ошибка Aw Snap – SBOX_FATAL_MEMORY_EXCEEDED возникает исключительно в браузерах на базе Chromium, поскольку при открытии того же сайта в Firefox она не проявляется. Хотя неизвестно по какой причине возникает сбой с этим кодом, есть несколько способов его исправить.
Обновление браузера
Первое, что нужно сделать, – убедиться, что используете последнюю версию обозревателя. Хотя обновления устанавливаются без участия пользователя в автоматическом режиме, можно вручную проверить их наличие. Для этого разверните основное меню нажатие на значок с тремя точками в верхнем правом углу окна и перейдите в пункт «Справка — О браузере Google Chrome».

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

Также стоит проверить установленные расширения. Попробуйте отключить их все и проверить, повторным открытием страницы, которую не удавалось посетить.
Сброс настроек
Если в предыдущем шаге не удалось исправить Aw Snap – SBOX_FATAL_MEMORY_EXCEEDED, попробуйте сбросить настройки до значений по умолчанию (или параметров чистой установки). Обозреватель вернется в исходное состояние, в котором не содержатся ошибки, связанные с временными файлами или данными, накопленными установленными расширениями.
Перейдите в настройки Chrome, на панели слева выберите «Сброс настроек и удаление вредоносного ПО».

При использовании других обозревателей Chromium следуйте аналогичному процессу.
Переустановка Chrome
Если ошибка остается после сброса, попробуйте удалить и установить новую версию браузера заново. После удаления обязательно перезагрузите компьютер. Также проверьте, что все работает, перед тем как снова войти в свою учетную запись и начать синхронизацию.
Если ошибка возвращается после входа в систему, просмотрите все, что находится в учетной записи и начните ее очистку, пока не найдете источник проблемы.
How to fix SBOX_FATAL_MEMORY_EXCEEDED error. Chrome, Edge, Brave, Opera.
If you are trying to use your chromium-based Internet browser either Chrome, Brave, Edge, Opera or another that we haven’t mentioned. But are getting Aw Snap — SBOX_FATAL_MEMORY_EXCEEDED error. This article will show you several different things you can try to fix the problem.

Lately, you have probably noticed that Aw Snap errors seem to be happening a lot more on websites like Facebook, Reddit, YouTube, etc and require you to refresh the page only for the same error to happen again. This issue seems to be exclusive to Chromium-based browsers as it isn’t happening on Firefox (for whatever reason). The exact error message will be Aw Snap — SBOX_FATAL_MEMORY_EXCEEDED or Aw Snap and something very similar.
While the exact cause of the problem isn’t yet known, there are a range of different solutions available that you can use to solve the problem though you’ll probably have to try more than one of them before you find the one that fixes the problem for you. Although you can run through all of the steps below in any order you choose, we suggest working your way from the top to the bottom.
How do you stop Aw Snap — SBOX_FATAL_MEMORY_EXCEEDED?
The first thing you need to do to solve this problem is to make sure that you are using the latest version of your browser. Although this is almost always the case you can manually check for updates by going to Settings > About and waiting for the update process to complete. If you do have the latest version available move on to the next step.
Check and re-evaluate the browser extensions you are using.
If you have recently installed a browser extension there’s a good chance that this may be the cause of the problem. If you have installed something new, just remove it and check to see if the problem goes away. If it does, you’ve found the issue. Even if you haven’t installed a new browser extension it’s worth checking the ones you already have just in case a bad update has broken them.
Reset your Edge, Chrome, Brave, Opera, etc to factory default settings.
If nothing so far has worked it’s time to reset your browser to factory default settings (clean install settings) this will give you a clean slate to work from that should be error-free. To do this in Google Chrome open Settings then click Reset and Cleanup > Restore settings to their original defaults > Reset settings. Most other Chromium browsers have a similar process.

Uninstall and reinstall Google Chrome.
If you’re still having issues even after a reset, you need to uninstall and reinstall your browser. Just make sure you restart your computer before you do the reinstallation. I also suggest that you check to see if everything is working before you sign back into your account and start everything syncing. This will be the best gauge to see if something you’ve manually added is causing the problem. If the problem comes back once you sign in, you need to go through everything you have on your account and slowly remove it until you find something that works.
SBOX_FATAL_MEMORY_EXCEEDED error on Chrome or Edge
While browsing or performing certain tasks with Chrome or Edge browser on your Windows 11 or Windows 10 computer you may get the Error 7012, SBOX_FATAL_MEMORY_EXCEEDED error page after the browser crashes. This post provides the most applicable solutions to this issue.

You’ll encounter this error when Google Chrome or Edge runs out of memory. This is often because of an app or website that uses excessive memory. This phenomenon occurs in Chrome and Edge and not in Firefox. A plausible explanation is that Edge currently sets the same limits as Chrome; the limits are so high (4GB-16GB) that exceeding them is almost always an indication of a memory leak or JavaScript error on the part of the site. This means the memory stack limit set by Firefox is different from that of Chrome and Edge.
SBOX_FATAL_MEMORY_EXCEEDED error on Chrome or Edge
- Make sure the browser is updated
- Clear memory cache
- Update your ESET antivirus (if applicable)
- Check Browser Extensions or Apps
- Rename Chrome Executable
- Check for and fix Memory Leaks
- Reset/Reinstall browser
Let’s take a look at the description of the process involved concerning each of the listed solutions.
1] Make sure browser is updated

This should sort out any memory ‘bug’ related issues that can potentially spike memory usage by the browser. So, the first thing you should check in your attempt to fix the SBOX_FATAL_MEMORY_EXCEEDED error, is the version of Edge or Chrome. If you are not running the latest version, you should update the browser.
2] Clear memory cache
Cache memory is responsible for various kinds of computer problems, including slow processing speed, slow startup, lag or hang, application responding, and many others. The main purpose of cache memory is to temporarily store frequently used data for quicker processing. However, sometimes due to memory leaks or some wrong exe files, the cache memory can slow down the system.
Since the issue at hand is memory-related, you can clear the memory cache on your computer, which also requires you to restart the browser.
3] Update your ESET antivirus (if applicable)
Investigations revealed most affected PC users had ESET security software installed and running on their Windows 11/10 PC. But, according to ESET support team, the company has released an update that causes this issue. So, if you have Eset products installed on your system, check to make sure you are using the latest version. If there is an update available, install it, restart your computer and try using Chrome or Edge again.
4] Check Browser Extensions or Apps

This solution requires you to check your browser extensions. But first open Chrome or Edge in Incognito mode by pressing CTRL + SHIFT + N key combo, and see if the error in highlight occurs. In Incognito mode, Chrome loads without any apps or extensions. If everything is working fine in Incognito mode, the culprit is likely a Chrome app or extension. In this case, you will have to disable browser extensions one after the other until you find the extension causing the issue.
You can also review the Chrome Task Manager to see what app or service uses more memory. If you see an app or website using excessive amounts of memory, close that tab or disable that app and try.
5] Rename Chrome Executable
- Press Windows key + E to open File Explorer.
- Navigate to the directory path below to locate the Chrome application
C:\Program Files (x86)\Google\Chrome\Application
- At the location, rename the Chrome executable to anything other than Chrome.
- Launch the Chrome browser again and test.
6] Check for and fix Memory Leaks
A memory leak in simple terms is when memory is allocated, but not deallocated. When a memory leak occurs, the memory has leaked out of the computer. In broader terms, it is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in a way that memory that is no longer needed is not released.
From all indications, it’s obvious we are dealing with a memory leak. In this case, you can find and fix Memory Leaks on your Windows 11/10 computer.
7] Reset/Reinstall browser

Last but not least. A viable solution to the issue at hand is to reset the Chrome browser or reset the Edge browser as the case may be – and see if that helps; else, you can try reinstalling the browser.
Any of these fixes should work for you!
What does SBOX_FATAL_MEMORY_EXCEEDED mean?
If you are getting the SBOX_FATAL_MEMORY_EXCEEDED on your Windows 11/10 PC, it simply means that the file or app used more memory than permitted for the sandboxed process. In a sandbox environment, every app or device can be limited to using only a certain amount of memory. If the app somehow exceeds it, you will receive this error message.
Why is my browser out of memory?
The out-of-memory error occurs when your computer no longer has any spare memory to allocate to the browser or other programs. The leading cause of the error is when you have too many tabs or videos playing and demand additional memory, but there is none.