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