Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Используйте тип профилирования отсоединяемых элементов средства "Память", чтобы найти и отобразить все отсоединенные элементы на веб-странице. Сравнение средств для просмотра отсоединяемых элементов см. в статье Средства для исследования отсоединяемых элементов в статье Устранение проблем с памятью.
Тип профилирования отсоединенных элементов помогает устранять утечки памяти из-за отсоединенных элементов DOM. Результирующий профиль содержит список отсоединяемых объектов, которые сохраняются ссылками в коде JavaScript. Этот тип профилирования отображает представление отсоединяемых узлов, помогающее определить возможные утечки памяти на веб-странице.
Анализ отсоединяемых элементов веб-страницы
Чтобы использовать тип профилирования отсоединяемых элементов для анализа отсоединяемых элементов веб-страницы:
Откройте веб-страницу, например демонстрационную веб-страницу Отсоединенные элементы, в новом окне или вкладке.
Щелкните веб-страницу правой кнопкой мыши и выберите Пункт Проверить. Или нажмите клавиши CTRL+SHIFT+I (Windows, Linux) или COMMAND+OPTION+I (macOS).
Откроется devTools.
В Средствах разработки на панели действий выберите
Память (память).Если эта вкладка не отображается, нажмите кнопку Дополнительные инструменты (
и выберите Память. Откроется средство "Память ":
Если кнопка "Отсоединенные элементы " не отображается, так как профиль уже отображается, в левом верхнем углу щелкните Профили (
).На этом этапе не нужно нажимать кнопку Отсоединенные элементы , так как веб-страница еще не создает отсоединенные элементы.
Создайте сообщения, которые будут храниться экземпляром JavaScript класса Room:
Кнопка Комната 1 изначально выбрана. В коде JavaScript демонстрационной веб-страницы экземпляр
Roomкласса используется для управления сообщениями в комнате 1.На демонстрационной веб-странице нажмите кнопку Быстрый трафик .
Демонстрационная веб-страница начинает создавать сообщения и отображать их на веб-странице:
После отображения некоторых сообщений нажмите кнопку Остановить на демонстрационной веб-странице.
Каждое сообщение является элементом
<div class="message">, на который ссылается экземплярRoomКласса Room 1. В дереве DOM веб-страницы нет отсоединяемых элементов, так как все элементы сообщения присоединяются к настоящему экземпляру класса Room 1.Измените на другой экземпляр класса Room, чтобы элементы стали отсоединяться:
На демонстрационной веб-странице нажмите кнопку Комната 2 , которая соответствует другому экземпляру
Roomкласса .На веб-странице сообщения исчезают:
Сообщения, созданные для экземпляра Room 1 класса Room (
<div class="message">элементы), больше не присоединяются к DOM, но на них по-прежнему ссылается экземпляр Room 1 класса Room . Они являются отсоединяемыми элементами, которые могут привести к утечке памяти, если они не будут использоваться снова веб-страницей.Получите список отсоединяемых элементов:
В devTools в средстве памяти нажмите кнопку Отсоединенные элементы , а затем нажмите кнопку Пуск .
Список отключенных узлов отображается в столбце Отсоединенные узлы созданного профиля отсоединяемых элементов :
Отсоединенные элементы отображаются в виде узлов DOM, как в дереве DOM в инструменте Элементы . В списке Профили в разделе Отсоединенные элементы указан профиль.
Разверните узел DOM, чтобы отобразить его дочерние элементы (узлы DOM):
Эти отсоединенные элементы (узлы DOM) являются утечками памяти, если они не будут использоваться повторно приложением.
Если вы хотите вернуться к списку кнопок параметров для типов профилирования, в левом верхнем углу средства "Память " щелкните Профили (
).
Дополнительные способы оценки утечек памяти см. в статье Средства для исследования отсоединяемых элементов в статье Устранение проблем с памятью.
Сведения об отсоединяемых элементах и утечках памяти
Отсоединенные элементы не всегда указывают на утечку памяти, а утечки памяти не всегда вызываются отсоединяемыми элементами. Утечки памяти зависят от контекста приложения.
Утечка памяти может произойти в приложении, если элемент больше не присоединен к дереву модели DOM, но по-прежнему ссылается на некоторые javaScript, запущенные на веб-странице. Эти элементы называются отсоединяемые элементы. Чтобы браузер собирал мусор (GC) отсоединяемый элемент, на элемент не следует ссылаться из дерева DOM или кода JavaScript.
Проблемы с памятью влияют на производительность веб-страницы, включая утечки памяти, раздутие памяти и частые сборки мусора. Ниже перечислены симптомы для пользователей.
- Производительность веб-страницы постепенно ухудшается с течением времени.
- Производительность веб-страницы постоянно плоха.
- Производительность веб-страницы задерживается или часто приостанавливается.
Чтобы повысить производительность веб-страницы, найдите элементы, отсоединенные от дерева DOM и на которые вы не ожидали по-прежнему ссылаться в коде JavaScript. Найдите отсоединенные элементы, которые браузер не может собрать из мусора, так как код по-прежнему ссылается на них, а затем отпустите ссылки кода JavaScript на отсоединенные элементы.
Повторное присоединение элементов
На демонстрационной веб-странице "Отсоединенные элементы" имеет смысл сохранить список сообщений чата, чтобы, если пользователь переключился обратно в комнату 1, журнал сообщений сохранялся. Аналогичным образом веб-канал в социальных сетях может отсоединять элементы, когда пользователи прокручивают мимо них, и повторно подключить их к DOM при прокрутке пользователей вверх.
Когда средство "Отсоединенные элементы " сообщает об отсоединяемых элементах, это не обязательно происходит из-за утечки памяти. Вы сами решаете, что происходит с утечкой памяти, а что нет. Возможно, приложение повторно присоединит эти элементы позже (вместо того, чтобы повторно создавать их, что может происходить медленнее).
Отсоединение узлов DOM является полезным подходом, если в конечном итоге вы повторно используете эти отсоединенные элементы (или удаляете их). Значение инструмента "Отсоединенные элементы" заключается в том, что при подозрении на утечку памяти вы можете проверка, сообщается ли о нем все большее число непредвиденных отсоединяемых элементов DOM.
Длительные приложения и отключаемые компоненты
Не забудьте отключить компоненты. Для длительных приложений небольшая утечка памяти всего в несколько килобайт может со временем заметно снизить производительность. Для веб-страниц, использующих платформу React, React поддерживает виртуализированную копию модели DOM. Сбой правильного отключения компонентов может привести к утечке приложения больших частей виртуальной модели DOM.
См. также
- Средства для исследования отсоединяемых элементов в статье Устранение проблем с памятью.
-
Веб-страница демонстрации "Отсоединенные элементы"
- Папка репозитория отсоединяемых элементов MicrosoftEdge/Demos > — исходный код.