节省内存但导致浏览器性能下降 谷歌宣布禁用Windows 10段堆内存机制
早些时候蓝点网已报道谷歌浏览器开发团队正在测试微软在 Windows 10 Version 2004 中新增的段堆内存机制。
段堆内存机制算是微软提供的现代化内存管理机制,从微软测试来看使用该机制有助于节省软件对于内存的开销。
例如 Microsoft Edge based on Chromium 在启用段堆内存机制后最高能够节省高达27%的内存资源降低功耗。
为此谷歌浏览器也在金丝雀测试版里对该机制进行测试,虽然测试遇到问题但谷歌浏览器也倒是成功用上该机制。
段堆内存机制虽然确实可以降低内存资源的开销降低功耗,但这却是使用处理器资源换来的因此功耗上也没下降。
谷歌浏览器开发团队经过测试后发现,启用该机制后确实可以降低内存开销,但处理器资源使用率明显出现上升。
同时浏览器整体性能尤其是WebXPRT3、Speedometer 2及JetStream2出现性能倒退而且有些得不偿失的感觉。
如果在多核心的高性能处理器上这种表现还不是特别明显,因为处理器资源的占用率通常不会始终 100%的状态。
如果在性能较低的处理器上使用段堆内存机制的话,CPU资源长时间高负载占用反而会导致整体性能下降更明显。
针对上述问题微软工程师表示启用段堆内存机制后不论是内存资源还是处理器资源的使用率都会受不同程度影响。
在这种情况下内存资源使用率的改善伴随着CPU资源使用率的增加,微软工程师表示还有些方案能够优化该问题。
方案1: 减少浏览器的瞬时堆栈分配量,但这需要对整个浏览器项目代码进行重大改变,因此是个长期优化计划。
方案2: 提高段堆本身的性能,这个方案只能由Windows 10开发团队去优化解决,软件方面无法直接进行处理。
谷歌工程师指出,如果部署这个方案则如何平衡内存和处理资源的使用率有点困难,尽管确实可以降低内存使用。
就目前来说我们没有任何理由在谷歌浏览器上启用段堆内存机制,除非我们能够获得更多遥测数据显示有助改进。
不过在Google Chrome v85 稳定版上是肯定用不上该机制的,所以在该版本上谷歌已经决定停用段堆内存机制。
至于未来版本谷歌浏览器团队还会继续考虑该机制的,到时候会通过遥测数据进行监测和改进看看是否值得启用。