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
[DevTools Bug]: Consistent memory leak when refreshing on React + non-React websites. #28323
Comments
Just wondering, how'd you install React DevTools in incognito? |
I see, thanks. |
Thanks for reporting this and recording a demo, I will try to triage this early next week, hopefully shipping a fix soon. |
I see similar behavior when the React Dev Tools is enabled, across all sites. Looking at the heap snapshots, you can see the previous window objects retained and accumulate on every reload. Maybe the Dev Tools is hanging on to a reference for every window object? |
Attempted to triage this, noticed that the required condition for this to happen is
Removing both of them fixes the issue. Having at least one of them still reproduces the memory leak, which is surprising, given the fact that the first one (syncSavedPreferences) is only using
Few ideas:
|
I believe it does, yes. Today I noticed excessive memory usage in Firefox. I opened One by one I turned off my extensions (not many, just 4) and watched the report on the memory usage for extensions. Once I turned off "React Developer Tools" the memory usage for the "Extensions" line in While I admit this anecdote isn't conclusive proof I think it serves as evidence that it could happen in firefox as well. |
Similar to @chrishoage, I have also observed this memory leak in Firefox in the form of high memory usage (though I saw it in happening in a React-using content process) which seemed to go away after disabling this extension. |
I am currently exploring an option to switch from The main problem for us with this approach is the requirement for executing scripts in |
It took me a whole Friday afternoon to finally find the issue came from this plugin. |
My Chrome got updated, and I can't reproduce this on Chrome v122.0.6261.69, can someone confirm this as well? |
Also cannot reproduce anymore 😬 (same chrome version as @hoxyq ). I'm slightly concerned that this might reappear unless we can pinpoint the Chromium commit that might have changed the behavior here... |
chrome v122.0.6261.112 still having this problem.....even if the webpage is not using React at all |
Chrome Version 122.0.6261.129 (Official Build) (64-bit) Firefox Version 123.0.1 (64-bit) I guess not a Chromium or Firefox issue then if both browsers suddenly behave properly, or it can be? |
Since we can't reproduce this, I am going to close this. Would be nice if someone can grep the changes from between Chrome 121 and Chrome 122 to identify the affecting commit, but this would require some time. |
you literally just refresh the tab and see the memory grow. |
Website or app
https://google.com
Repro steps
With Chrome version
121.0.6167.184 (Official Build) (arm64)
React dev tools:
5.0
-Created from revision 993c4d003 on 12/5/2023.
Repeatedly refreshing
https://google.com
continually leaks memory.With React Dev Tools
Some memory is retained temporarily between refreshes, but notably forcing GC (the trashcan button), never shrinks + each subsequent refresh monotonically increases memory overhead.
With.React.dev.tools.mov
Without React Dev Tools
Forcing GC without react dev tools drops the memory footprint from ~100MB to ~10MB instantly.
without.react.dev.tools.mov
Other debugging:
Went down a massive rabbithole of Chrome version bisection (memory between refreshed started to be retained a bit longer with this V8 GC change), but it always GC'd correctly when being forced: https://chromium.googlesource.com/v8/v8/+/7477604415624e2f60000194f766e2f404e02fed.
Other notes:
closure
+compiled
code) + hopefully this should be simple to repro.How often does this bug happen?
Every time
DevTools package (automated)
No response
DevTools version (automated)
No response
Error message (automated)
No response
Error call stack (automated)
No response
Error component stack (automated)
No response
GitHub query string (automated)
No response
The text was updated successfully, but these errors were encountered: