microsoft / fluentui

Fluent UI web represents a collection of utilities, React components, and web components for building web applications.
https://react.fluentui.dev
Other
18.31k stars 2.72k forks source link

[Bug]: Memory leak in web-components when use innerHTML Update #30643

Open CV-souryu opened 6 months ago

CV-souryu commented 6 months ago

Library

Web Components (@fluentui/web-components)

System Info

cdn import 2.5.16
chorme-121.0.6167.187

Are you reporting Accessibility issue?

None

Reproduction

https://codesandbox.io/p/sandbox/bitter-snow-8wp4xl?file=%2Findex.html%3A24%2C10

Bug Description

Actual Behavior

use doc.innerHTML to update DOM ,so many Detached HTMLElement in memory

Expected Behavior

free Detached HTMLElement

Logs

No response

Requested priority

Normal

Products/sites affected

No response

Are you willing to submit a PR to fix?

no

Validations

DavidVollmers commented 6 months ago

Please explain your problem in a thoroughly manner. Just posting a codesandbox link without any further comments doesn't help anyone.

From what I can understand, you are trying to argue that memory consumption rises by setting inner HTML in a loop? I think this isn't related to fluent UI, but maybe instead to your browser? (https://issues.chromium.org/issues/40482092)

CV-souryu commented 6 months ago

Please explain your problem in a thoroughly manner. Just posting a codesandbox link without any further comments doesn't help anyone.

From what I can understand, you are trying to argue that memory consumption rises by setting inner HTML in a loop? I think this isn't related to fluent UI, but maybe instead to your browser? (https://issues.chromium.org/issues/40482092)

抱歉我不得不用中文进行描述 在使用“blazor-server”服务端交互时我使用了“fluent-ui”。 在blazor路由导航到新页面时或对“DomTree”进行更新时我观察到,浏览器内存一直处于上涨状态,对浏览器内存进行快照,发现里面有大量的已分离dom。 并且无法提供浏览器提供的垃圾清理按钮清除这些元素。 这些元素被引用在“wakemap”中。或许是和“style”订阅者有关。

他的原理可能和我提供的“sandbox”里的demo相同。 事实上在我提供的sandbox中,点击左侧的使用一次“innerHTML”就可以观察到内存中出现“被wakemap”引用的“分离的dom元素”

“antDesign-ui-blazor”在页面更新时内存也会上涨,但使用浏览器提供的内存清理按钮时,内存会快速释放到合理水平。

firefox和chrome均有以上情况

DavidVollmers commented 6 months ago

Do you mean WeakMap by "wakemap"?

chrisdholt commented 6 months ago

This was just merged and a new bundle should be generated tomorrow - https://github.com/microsoft/fluentui/pull/29806

Please see if that resolves this issue.

CV-souryu commented 6 months ago

This was just merged and a new bundle should be generated tomorrow - #29806

Please see if that resolves this issue.

not resolves on 2.5.17

microsoft-github-policy-service[bot] commented 2 weeks ago

This issue has not had activity for over 180 days! We're adding Soft close label and will close it soon for house-keeping purposes. Still require assistance? Please add comment - "keep open".