在 Windows 10 May 2020(20H1/Version 2004)功能更新中,微軟引入了名為 Segment Heap 的內(nèi)存管理機制,能將基于 Chromium 的 Edge 瀏覽器內(nèi)存使用率降低 27%。不過內(nèi)存使用的改進是犧牲 CPU 使用率來換取的,因此 Chromium 團隊宣布在 Chrome 85 穩(wěn)定版中禁用該功能。
Segment Heap 是一種現(xiàn)代堆的實現(xiàn)方式,一般會降低整體內(nèi)存使用量。谷歌在今年 6 月下旬宣布,Canary 通道的 Chrome 版本(version 85.0.4182.0)已經(jīng)開始支持 Segment Heap 內(nèi)存管理機制。實驗發(fā)現(xiàn),瀏覽器和網(wǎng)絡服務實用程序進程等方面能節(jié)省數(shù)百兆內(nèi)存。實際結(jié)果會有很大的不同,多核機上的節(jié)省幅度最大。
不過在進一步的深入探索之后,發(fā)現(xiàn)會導致“Windows Segment Heap 的性能回歸”:
部署 https://chromium-review.googlesource.com/c/chromium/src/+/2163163 提議,在版本號高于 Build 19041(Windows 10 Version 2004)的版本中使用 Segment Heap 來替代 legacy heap。不過測試發(fā)現(xiàn)這會導致 WebXPRT3、Speedometer2 和 JetStream2 的性能倒退。
微軟員工表示,無論是內(nèi)存還是CPU的使用都會受到影響。在這種情況下,內(nèi)存的改善伴隨著CPU使用率的增加,并提出了兩個方案來克服這個問題。
1)減少瀏覽器的瞬時堆分配量。這將需要在整個瀏覽器代碼庫中進行重大改變。
2)提高Segment堆本身的性能。這只能由Windows團隊解決,我們正在調(diào)查我們的方案。
Chromium 的 bruce 在該帖子中中指出:" M85 已經(jīng)有很多其他的優(yōu)化,而同時部署這個變化(同時的改善內(nèi)存和性能倒退),如何平衡變得有點困難。雖然我從實驗室測試中聽到了關于節(jié)省內(nèi)存的令人鼓舞的事情,但我不認為我們有任何辦法讓這個啟用,直到我們在 20H1 上有明確的遙測數(shù)據(jù)和實驗室測試,這兩者都不會及時發(fā)生在 M85 上。所以,我們的計劃是在 M85 上禁用這個功能(從而給我們提供另一個遙測數(shù)據(jù)點),然后在未來重新考慮。"