在 Windows 10 May 2020(20H1/Version 2004)更新中,微软引入了名为“堆内存Segment Heap)”的内存管理机制,能将新版 Microsoft Edge 的内存使用率降低 27%。
不过谷歌在测试中发现,堆内存功能在 Windows 10 2004 上为 Chrome 带来的内存改进是以增加 CPU 使用量为代价的。优化了浏览器的内存占用,但牺牲了 CPU 使用率,Chromium 团队为此决定在 Chrome 85 稳定版中禁用该功能。
堆内存Segment Heap)是一种现代堆的实现方式,通常来说会降低整体内存使用量。谷歌在今年 6 月下旬宣布,Canary 通道的 Chrome 版本(version 85.0.4182.0)已经开始支持 Segment Heap 内存管理机制。实验发现,浏览器和网络服务实用程序进程等方面能节省数百兆内存。实际结果会有很大的不同,多核机上的节省幅度最大。
不过在进一步的深入测试和探索之后,Chromium 团队发现会 Windows 的堆内存机制导致系统性能降低。
在版本号高于 Build 19041(Windows 10 Version 2004)的版本中使用 Segment Heap 来替代 legacy heap(应用此 commit )。然而测试发现这会导致 WebXPRT3、Speedometer2 和 JetStream2 的性能倒退。
微软员工表示,无论是内存还是 CPU 的使用都会受到影响。在这种情况下,内存的改善伴随着 CPU 使用率的增加,并提出了两个方案来克服这个问题。
1)减少浏览器的瞬时堆分配量。这将需要在整个浏览器代码库中进行重大改变。
2)提升 Segment Heap 本身的性能。这只能由 Windows 团队解决,目前正在研究方案。
Chromium 团队成员 Bruce 在帖子中指出:” M85 已经有很多其他的优化,而同时部署这项变更(同时的内存改进和性能倒退),如何平衡变得有点困难。虽然我从实验室测试中听到了关于节省内存的令人鼓舞的事情,但我不认为我们有任何办法让这个启用,直到我们在 20H1 上有明确的遥测数据和实验室测试,这两者都不会及时发生在 M85 上。所以,我们的计划是在 M85 上禁用这个功能(从而给我们提供另一个遥测数据点),然后在未来重新考虑。”
稿源:cnBeta