Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New article "Debug DOM memory leaks ("Detached elements" profiling type)" #3282

Merged
merged 70 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
e37adfc
Update title & lead-in & toc
mikehoffms Sep 24, 2024
d850352
update near links in other articles
mikehoffms Oct 3, 2024
0a0849b
tabsets
mikehoffms Oct 10, 2024
c203f8c
desc: yaml field
mikehoffms Oct 10, 2024
979774c
Merge branch 'main' into user/mikehoffms/depr-detached-elem
mikehoffms Oct 10, 2024
3438978
temp Differences section
mikehoffms Oct 11, 2024
938765d
explain strategy, then single list of ui steps
mikehoffms Oct 13, 2024
304f8a7
Restructure "Additional considerations" h2
mikehoffms Oct 13, 2024
9be23cf
outcome at end of ui steps list
mikehoffms Oct 13, 2024
00483d2
delete Mem tab steps until DE tab rewritten
mikehoffms Oct 13, 2024
e9c4d83
explain clicking the particular ID
mikehoffms Oct 13, 2024
09def9a
"Scroll to line 49" is a numbered action step
mikehoffms Oct 13, 2024
a1d25c9
task h2: express the task well
mikehoffms Oct 13, 2024
4b061d8
h2 Strategy section, h2 for locations of feature
mikehoffms Oct 14, 2024
befdb25
rewrite main steps for DE tool
mikehoffms Oct 14, 2024
990da09
why click this button at this point
mikehoffms Oct 14, 2024
bb5a868
remove extra "view source file" step
mikehoffms Oct 14, 2024
80401e4
separate action steps vs result desc
mikehoffms Oct 14, 2024
15d5891
Merge branch 'main' into user/mikehoffms/depr-detached-elem
mikehoffms Oct 16, 2024
e6967be
whatsnew content
mikehoffms Oct 16, 2024
1cc52a3
move new way from DE tool to Mem tool h2
mikehoffms Oct 17, 2024
f28cd4f
png link fix
mikehoffms Oct 17, 2024
b95e81d
rewrite mentions of DE tool in other articles
mikehoffms Oct 17, 2024
319b0a5
link from DE tool intro to Mem tool h2
mikehoffms Oct 17, 2024
623a865
Move explanations to h2s after UI steps lists
mikehoffms Oct 17, 2024
038cde3
move caveat about early button to correct spot
mikehoffms Oct 17, 2024
462c738
clean up Memory tool h2 content
mikehoffms Oct 17, 2024
93ad436
put "not list you want" in correct spot
mikehoffms Oct 17, 2024
20e327a
test & fix 13-step list
mikehoffms Oct 17, 2024
c840103
leak in existing not proposed code
mikehoffms Oct 17, 2024
0893538
show connected tools at top
mikehoffms Oct 17, 2024
0ea4e64
unindent conclusion
mikehoffms Oct 17, 2024
dc8375c
table of tools per-section
mikehoffms Oct 18, 2024
80b63dc
reseq sections, id feature in headings
mikehoffms Oct 18, 2024
5214f0d
Restructure Mem tool article
mikehoffms Oct 18, 2024
a3ff8cc
star nav DE "ways" table
mikehoffms Oct 18, 2024
66b4991
anchor linkfix
mikehoffms Oct 18, 2024
6fa9d30
x-link docs re ways to see DEs
mikehoffms Oct 19, 2024
c517ea2
linkfix
mikehoffms Oct 19, 2024
c8be88f
tune x-links
mikehoffms Oct 19, 2024
2fb12ce
rewrite the new section
mikehoffms Oct 19, 2024
459ae52
remove done todo
mikehoffms Oct 19, 2024
91e6cfd
restore deprecated Alert tagging of depr'n
mikehoffms Oct 20, 2024
737eecb
add article Mem tool DE profl-type
mikehoffms Oct 20, 2024
7a82033
linkfix
mikehoffms Oct 20, 2024
ed1336b
add pt to title of profiling types articles
mikehoffms Oct 20, 2024
aa19f93
correct link in DE Tools table
mikehoffms Oct 20, 2024
ea76085
h2 heading for the new procedure
mikehoffms Oct 20, 2024
7a6fe07
fresh ui for "Allocations on timeline" & "Allocation sampling" profil…
mikehoffms Oct 20, 2024
1286e97
todo make Mem tool article overview only
mikehoffms Oct 20, 2024
bcab8e3
red boxes on 3 charts/views
mikehoffms Oct 20, 2024
e3f0334
Update Mem tool Prof types png in Heap Snp article
mikehoffms Oct 21, 2024
84ca778
new option btns in Mem tool article
mikehoffms Oct 21, 2024
8761117
incorp review
mikehoffms Oct 21, 2024
8a8b7b9
linkfix
mikehoffms Oct 21, 2024
b591867
add .md tho vscode nav worked
mikehoffms Oct 21, 2024
de37a6b
move details from Fix mem article
mikehoffms Oct 21, 2024
d4acdfc
linkfix
mikehoffms Oct 21, 2024
4a62f5d
move taskman pngs right dir, show js col
mikehoffms Oct 21, 2024
9d4664d
.
mikehoffms Oct 21, 2024
4df32ae
, below
mikehoffms Oct 21, 2024
fd21536
remove link to self, streamline links
mikehoffms Oct 22, 2024
8dded79
resolve all "option button (profiling type)"
mikehoffms Oct 22, 2024
c945768
omit "Retainers section" from tools overview table
mikehoffms Oct 22, 2024
85ab9bc
Docs > Article, in table col headers
mikehoffms Oct 22, 2024
ad8797b
table hdgs: | Use case | Tool | Article |
mikehoffms Oct 22, 2024
c69230a
dup sentence at start
mikehoffms Oct 22, 2024
acd6553
apply final review cmts
mikehoffms Oct 22, 2024
283d95d
"Use case" col of Mem tools table
mikehoffms Oct 22, 2024
0efe702
linkfix/remove
mikehoffms Oct 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions microsoft-edge/dev-videos/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -626,12 +626,14 @@ December 9, 2021

[![Thumbnail image for video "Debug memory leaks with the Microsoft Edge Detached Elements tool"](./index-images/detached-elements.png)](https://www.youtube.com/watch?v=v2iy17ptmBk)

The **Detached Elements** tool helps you investigate and resolve DOM memory leaks.
October 2024: To debug DOM memory leaks, use the **Detached Elements** profiling type in the **Memory** tool, which has replaced the **Detached Elements** tool.

Memory leaks occur when the JavaScript code of an application retains more and more objects in memory instead of releasing them for the browser to garbage-collect. We built the **Detached Elements** tool with the Microsoft Teams developers, and it has already helped us find and fix memory leaks across many of our own websites and apps.
The **Detached Elements** profiling type in the **Memory** tool helps you investigate and resolve DOM memory leaks.

Memory leaks occur when the JavaScript code of an application retains more and more objects in memory instead of releasing them for the browser to garbage-collect. We built the **Detached Elements** feature with the Microsoft Teams developers, and it has already helped us find and fix memory leaks across many of our own websites and apps.

See also:
* [Debug DOM memory leaks with the Detached Elements tool](../devtools-guide-chromium/memory-problems/dom-leaks.md)<!-- has Video section -->
* [Debug DOM memory leaks with the Detached Elements profiling type](../devtools-guide-chromium/memory-problems/dom-leaks.md)<!-- has Video section -->
* [Debug memory leaks with the Microsoft Edge Detached Elements tool](https://blogs.windows.com/msedgedev/2021/12/09/debug-memory-leaks-detached-elements-tool-devtools/) - blog post.


Expand Down
1 change: 0 additions & 1 deletion microsoft-edge/devtools-guide-chromium/about-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ Microsoft Edge DevTools includes the following tools.
| **Coverage** tool | Help you find unused JavaScript and CSS code, to speed up your page load and save your mobile users cellular data. | [Find unused JavaScript and CSS code with the Coverage tool](coverage/index.md) |
| **Crash analyzer** tool | Analyze crashes of your web app. You can input a JavaScript production stack trace, such as for non-fatal JavaScript exceptions, and then have your source maps applied to the stack trace so that you can debug faster. | [Crash analyzer tool](./crash-analyzer/index.md) |
| **CSS Overview** tool | Help you better understand your page's CSS and identify potential improvements. | [CSS Overview tool](css/css-overview-tool.md) |
| **Detached Elements** tool | To increase the performance of your page, this tool finds detached elements that the browser cannot garbage-collect, and identifies the JavaScript object that is still referencing the detached element. By changing your JavaScript to release the element, you reduce the number of detached elements on your page, increasing page performance and responsiveness. | [Debug DOM memory leaks with the Detached Elements tool](memory-problems/dom-leaks.md) |
mikehoffms marked this conversation as resolved.
Show resolved Hide resolved
| **Developer Resources** | Shows resource URLs for the webpage. | [Developer Resources tool](developer-resources/developer-resources.md) |
| **Device Emulation** | Use the **Device Emulation** tool, also called _Device Simulation Mode_ or _Device Mode_, to approximate how your page looks and responds on a mobile device. | [Emulate mobile devices (Device Emulation)](device-mode/index.md) |
| **Elements** tool | Inspect, edit, and debug your HTML and CSS. You can edit in the tool while displaying the changes live in the browser. Debug your HTML using the DOM tree, and inspect and work on the CSS for your webpage. | [Inspect, edit, and debug HTML and CSS with the Elements tool](elements-tool/elements-tool.md) |
Expand Down
2 changes: 1 addition & 1 deletion microsoft-edge/devtools-guide-chromium/landing/index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ landingContent:
- text: Fix memory problems
url: ../memory-problems/index.md

- text: Debug DOM memory leaks with the Detached Elements tool
- text: Debug DOM memory leaks with the Detached Elements profiling type
url: ../memory-problems/dom-leaks.md

- text: Understand security issues using the Security tool
Expand Down
46 changes: 24 additions & 22 deletions microsoft-edge/devtools-guide-chromium/memory-problems/dom-leaks.md
mikehoffms marked this conversation as resolved.
Show resolved Hide resolved
mikehoffms marked this conversation as resolved.
Show resolved Hide resolved
mikehoffms marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Debug DOM memory leaks with the Detached Elements tool
title: Debug DOM memory leaks with the Detached Elements profiling type
description: Use the Detached Elements tool in the Microsoft Edge DevTools to find and fix DOM memory leaks.
author: MSEdgeTeam
ms.author: msedgedevrel
Expand All @@ -8,20 +8,16 @@ ms.service: microsoft-edge
ms.subservice: devtools
ms.date: 09/18/2023
---
# Debug DOM memory leaks with the Detached Elements tool
# Debug DOM memory leaks with the Detached Elements profiling type

<!-- todo: revise article to use Memory tool > Detached elements" profiling type instead of Detached Elements tool -->

> [!IMPORTANT]
> The **Detached Elements** tool is being deprecated. Starting with Microsoft Edge 130, the **Detached Elements** tool has a message stating that the tool is deprecated; instead, in the **Memory** tool, in the initial **Select profiling type** screen, select the **Detached elements** option button. The Edge-only Chrome DevTools Protocol (CDP) function `EdgeDOMMemory.getDetachedNodesIds` continues to work, but use `DOM.getDetachedDomNodes` instead.
>
> In Microsoft Edge 133, the **Detached Elements** tool will be removed; instead, in the **Memory** tool, in the initial **Select profiling type** screen, select the **Detached elements** option button. The CDP function `EdgeDOMMemory.getDetachedNodesIds` will be removed; use `DOM.getDetachedDomNodes` instead.

<!-- todo:
When the **Detached Elements** tool is removed, delete the present article, redirect to new url:
Add new article in Memory tool toc bucket: "Debug detached DOM element memory leaks with the Memory tool"
or possibly reuse present .md file / url; change title & content
-->

Use the **Detached Elements** tool to find detached elements that the browser cannot garbage-collect, and locate the JavaScript object that is still referencing the detached element. By changing your JavaScript to release the element, you reduce the number of detached elements on your page.
Use the **Detached elements** profiling type in the **Memory** tool to find detached elements that the browser cannot garbage-collect, and locate the JavaScript object that is still referencing the detached element. By changing your JavaScript to release the element, you reduce the number of detached elements on your page.

A memory leak can occur in your application when an element is no longer attached to the Document Object Model (DOM) tree, but is still referenced by some JavaScript running on the page. These elements are called *detached elements*. For the browser to garbage-collect (GC) the detached element, the element must not be referenced from the DOM tree or from JavaScript code.

Expand All @@ -43,12 +39,10 @@ As explained in [Fix memory problems](index.md), memory issues affect page perfo
<!-- ====================================================================== -->
## Open the Detached Elements tool

To open the **Detached Elements** tool and load the demo page:
To open the demo page and view its detached elements:

1. Open the [Detached Elements demo application](https://microsoftedge.github.io/Demos/detached-elements/) in a new window or tab.

<!-- You can view the source files for the Detached Elements demo in the [MicrosoftEdge/Demos > detached-elements](https://github.com/MicrosoftEdge/Demos/tree/main/detached-elements) repo folder. -->

1. To open DevTools, right-click the webpage, and then select **Inspect**. Or, press **Ctrl+Shift+I** (Windows, Linux) or **Command+Option+I** (macOS). DevTools opens.

1. In DevTools, in the **Activity Bar**, select the **Detached Elements** tab. If that tab isn't visible, click the **More Tools** (![More Tools icon](./dom-leaks-images/more-tools-icon.png)) button:
Expand All @@ -59,7 +53,7 @@ To open the **Detached Elements** tool and load the demo page:
<!-- ====================================================================== -->
## Get detached elements

The **Get Detached Elements** (![The Get Detached Elements icon](./dom-leaks-images/get-detached-elements-icon.png)) button in the **Detached Elements** tool finds and displays all of the detached elements on a web page.
The **Get Detached Elements** (![The Get Detached Elements icon](./dom-leaks-images/get-detached-elements-icon.png)) button in the **Detached Elements** feature finds and displays all of the detached elements on a web page.

To find detached elements:

Expand All @@ -73,9 +67,9 @@ To find detached elements:

1. Click the **Room 2** button:

1. In the **Detached Elements** tool, click the **Get Detached Elements** (![The Get Detached Elements icon](./dom-leaks-images/get-detached-elements-icon.png)) icon.
1. In the **Detached Elements** feature, click the **Get Detached Elements** (![The Get Detached Elements icon](./dom-leaks-images/get-detached-elements-icon.png)) icon.

The **Detached Elements** tool displays all of the detached elements of the page. When you switch to **Room 2** in the demo application, the messages that were generated in **Room 1** are no longer attached to the DOM, but they are still referenced by JavaScript:
The **Detached Elements** feature displays all of the detached elements of the page. When you switch to **Room 2** in the demo application, the messages that were generated in **Room 1** are no longer attached to the DOM, but they are still referenced by JavaScript:

![Get Detached Elements using the Detached Elements tool](./dom-leaks-images/get-detached-elements.png)

Expand All @@ -85,29 +79,29 @@ To find detached elements:

Next, trigger garbage collection (GC) in the browser:

1. In the **Detached Elements** tool, click the **Collect garbage** (![The 'Collect garbage' icon](./dom-leaks-images/collect-garbage-icon.png)) icon.
1. In the **Detached Elements** feature, click the **Collect garbage** (![The 'Collect garbage' icon](./dom-leaks-images/collect-garbage-icon.png)) icon.

1. Click the **Get Detached Elements** (![The Get Detached Elements icon](./dom-leaks-images/get-detached-elements-icon.png)) icon.

When you select **Collect garbage**, the browser runs garbage collection. When you select **Get Detached Elements**, the **Detached Elements** tool displays all detached elements that cannot be garbage collected. These detached elements may be memory leaks if they aren't going to be reused by the application.
When you select **Collect garbage**, the browser runs garbage collection. When you select **Get Detached Elements**, the **Detached Elements** feature displays all detached elements that cannot be garbage collected. These detached elements may be memory leaks if they aren't going to be reused by the application.


<!-- ====================================================================== -->
## Identify the JavaScript code that retains detached elements

Once you have found a detached element that cannot be garbage-collected, you can use the **Analyze** (![The Analyze icon](./dom-leaks-images/analyze-icon.png)) button in the **Detached Elements** tool to identify the JavaScript code running on the page that is still referencing the detached element. The **Analyze** button takes a heap snapshot and populates the **ID** of the detached element with its location in the heap.
Once you have found a detached element that cannot be garbage-collected, you can use the **Analyze** (![The Analyze icon](./dom-leaks-images/analyze-icon.png)) button in the **Detached Elements** feature to identify the JavaScript code running on the page that is still referencing the detached element. The **Analyze** button takes a heap snapshot and populates the **ID** of the detached element with its location in the heap.

For more information about heap snapshots, read [Record heap snapshots using the Memory tool](heap-snapshots.md).

To identify the JavaScript code that references a detached element:

1. In the **Detached Elements** tool, click the **Analyze** (![The Analyze icon](./dom-leaks-images/analyze-icon.png)) icon.
1. In the **Detached Elements** feature, click the **Analyze** (![The Analyze icon](./dom-leaks-images/analyze-icon.png)) icon.

The **Memory** tool opens in the **Quick View** toolbar, at the bottom of DevTools:

![Analyze Detached Elements in the Detached Elements tool](./dom-leaks-images/analyze-detached-elements.png)

1. From the **Detached Elements** tool, select the **Id** field of a detached element.
1. From the **Detached Elements** feature, select the **Id** field of a detached element.

The **Memory** tool automatically selects the object in the heap that is referencing the detached element. We call these objects **Retainers**:

Expand Down Expand Up @@ -151,7 +145,7 @@ You can check for detached elements from different origins or frames using the *

1. Select a different origin.

The new origin is displayed in the **Detached Elements** tool.
The new origin is displayed in the **Detached Elements** feature.


<!-- ====================================================================== -->
Expand All @@ -167,4 +161,12 @@ Similarly, a feed in social media might detach elements as users scroll past the

For long-running apps, small memory leaks of only a few kilobytes can noticeably degrade performance over time. Web developers who use the React framework know that React maintains a virtualized copy of the DOM. Failing to properly unmount components can potentially lead to an application leaking large parts of the virtual DOM.

This demo app and its leaks are artificial. Test the Detached Elements tool on your production website or app. If you find potential problems with the Detached Elements tool, [contact the Microsoft Edge DevTools team](../contact.md) to send feedback about the **Detached Elements** tool and memory leak debugging.
This demo app and its leaks are artificial. Test the Detached Elements tool on your production website or app. If you find potential problems with the Detached Elements tool, [contact the Microsoft Edge DevTools team](../contact.md) to send feedback about the **Detached Elements** feature and memory leak debugging.


<!-- ====================================================================== -->
## See also
<!-- todo: all links in article -->

* [Detached Elements demo application](https://microsoftedge.github.io/Demos/detached-elements/)
* [MicrosoftEdge/Demos > detached-elements](https://github.com/MicrosoftEdge/Demos/tree/main/detached-elements) repo folder, to view the source files for the Detached Elements demo.
mikehoffms marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Learn how to use Microsoft Edge and DevTools to find memory issues that affect p
* Identify detached DOM trees (a common cause of memory leaks) with **Heap snapshot**.
* Find out when new memory is being allocated in your JavaScript heap (JS heap) with **Allocation instrumentation on timeline**.

See also [Debug DOM memory leaks with the Detached Elements tool](dom-leaks.md).
See also [Debug DOM memory leaks with the Detached Elements profiling type](dom-leaks.md).


<!-- ====================================================================== -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ last sync'd April 16, 2024
|:---|:---|:---|:---|
| CSS mirroring sourcemaps | Used for [Update .css files from within the Styles tab (CSS mirror editing)](../../visual-studio-code/microsoft-edge-devtools-extension/css-mirror-editing-styles-tab.md) for the DevTools extension for Visual Studio Code. | [/css-mirroring-sourcemaps-demo/](https://github.com/MicrosoftEdge/Demos/tree/main/css-mirroring-sourcemaps-demo) | n/a |
| TODO app | Simple To Do app with vanilla JavaScript. Used for screenshots in the [Microsoft Edge DevTools documentation](/microsoft-edge/devtools-guide-chromium/landing/), and for [Opening DevTools and the DevTools browser](../../visual-studio-code/microsoft-edge-devtools-extension/open-devtools-and-embedded-browser.md) for the DevTools extension for Visual Studio Code. | [/demo-to-do/](https://github.com/MicrosoftEdge/Demos/tree/main/demo-to-do) | [My tasks](https://microsoftedge.github.io/Demos/demo-to-do/) |
| Detached elements | Chat-like demo. Used for [Debug DOM memory leaks with the Detached Elements tool](../memory-problems/dom-leaks.md). | [/detached-elements/](https://github.com/MicrosoftEdge/Demos/tree/main/detached-elements) | [Simulate traffic](https://microsoftedge.github.io/Demos/detached-elements/) |
| Detached elements | Chat-like demo. Used for [Debug DOM memory leaks with the Detached Elements profiling type](../memory-problems/dom-leaks.md). | [/detached-elements/](https://github.com/MicrosoftEdge/Demos/tree/main/detached-elements) | [Simulate traffic](https://microsoftedge.github.io/Demos/detached-elements/) |
| 3D View | Used for [Navigate webpage layers, z-index, and DOM using the 3D View tool](../3d-view/index.md). | [/devtools-3d/](https://github.com/MicrosoftEdge/Demos/tree/main/devtools-3d) | [Microsoft Edge DevTools 3D View tool demo](https://microsoftedge.github.io/Demos/devtools-3d/) |
| Accessibility testing | Used for [Accessibility-testing features](../accessibility/reference.md). | [/devtools-a11y-testing/](https://github.com/MicrosoftEdge/Demos/tree/main/devtools-a11y-testing) | [Animal shelter](https://microsoftedge.github.io/Demos/devtools-a11y-testing/) |
| DevTools issue: animating a CSS property that requires layout | Illustrates the **Issues** and **Elements** tools warning when CSS properties that require layout are animated. | [/devtools-animated-property-issue/](https://github.com/MicrosoftEdge/Demos/tree/main/devtools-animated-property-issue) | [Animated CSS property demo](https://microsoftedge.github.io/Demos/devtools-animated-property-issue/) |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,18 @@ See [Apply color themes to DevTools](../../../customize/theme.md).
<!-- Title: Introducing the Detached Elements tool -->
<!-- Subtitle: Use the Detached Elements tool to find and fix DOM node memory leaks. -->

October 2024 update: To debug DOM memory leaks, use the **Detached Elements** profiling type in the **Memory** tool, which has replaced the **Detached Elements** tool.

A DOM node is considered "detached" when it is no longer attached to any element of the DOM but is still being retained in memory by Microsoft Edge. The browser cannot garbage-collect the element, because some JavaScript is still referencing the element even though it's no longer on the page or a part of the DOM.

The new **Detached Elements** tool finds all of the detached elements on your page and displays them. You can expand and collapse a detached element to see the parent and child nodes that are also being retained. You can trigger the browser's garbage collection by selecting **Collect garbage** and validate that you have a memory leak when a detached element cannot be garbage-collected. Finally, you can jump into JavaScript that's referencing the detached element by taking a heap snapshot with the **Analyze** button.
The **Detached Elements** profiling type in the **Memory** tool finds all of the detached elements on your page and displays them. You can expand and collapse a detached element to see the parent and child nodes that are also being retained. You can trigger the browser's garbage collection by selecting **Collect garbage** and validate that you have a memory leak when a detached element cannot be garbage-collected. Finally, you can jump into JavaScript that's referencing the detached element by taking a heap snapshot with the **Analyze** button.

![The Detached Elements tool](./devtools-images/detached-elements-tool.png)

Update: This feature has been released and is no longer experimental.<!-- To turn on this experiment, go to **Settings** > **Experiments** and select the checkbox next to **Detached Elements**. -->

See also:
* [Debug DOM memory leaks with the Detached Elements tool](../../../memory-problems/dom-leaks.md)
* [Debug DOM memory leaks with the Detached Elements profiling type](../../../memory-problems/dom-leaks.md)


<!-- ====================================================================== -->
Expand Down
Loading