时间:2020-09-16 来源:u小马 访问:次
微软在 Windows 10 Version 2004 版里已经增加名为段堆的内存来管理机制,这种机制有助于降低内存的占用。最初段堆内存管理机制仅适用于UWP类应用程序例如经典版的Microsoft Edge 浏览器,后来微软对其逐步扩展。现在这种新的内存管理机制已支持传统的桌面程序,据称 Microsoft Edge based on Chromium 内存降低27%。
谷歌浏览器团队曾在年中时启用过该机制,但随后谷歌工程师发现启用段堆内存机制后处理器使用率会明显增加。也就是说虽然降低内存使用率但处理器使用率却被塞满,谷歌工程师认为得不偿失因此已暂停使用段堆内存机制。
现在谷歌寻求Windows 10团队帮助:
在此前暂停段堆内存机制的文章里我们已经提到微软工程师提供两种方案可以对处理器使用率增加问题进行缓解。
方案1: 减少浏览器的瞬时堆栈分配量,但这需要对整个浏览器项目代码进行重大改变,因此是个长期优化计划。
方案2: 提高段堆本身的性能,这个方案只能由Windows 10开发团队去优化解决,软件方面无法直接进行处理。
针对这些方案谷歌浏览器开发团队并不准备重写整个项目代码,所以谷歌工程师研究后决定采取第二个优化方案。但这需要Windows 10开发团队的帮助 , 目前谷歌工程师已经在Github上发帖希望微软协助增加两个实验性选项。
改进将对所有Chromium浏览器有效:
谷歌工程师提出的两个实验性选项全部都是关于系统创建段堆的改进,这确实需要微软工程师们去优化系统内核。谷歌工程师研究SDK套件后提出方案包括创建1个段堆而不是1个NT堆 ,另一个选项是创建1个NT堆而不是段堆。其中创建NT堆而不是段堆的情况下还要阻止应用程序请求创建段堆,即即便是请求段堆系统也只会去创建NT堆。
谷歌浏览器开发团队希望微软提供这两种选项后 , Chromium项目团队可以进行针对性的测试看看哪种效果更好。当然就目前来说短时间内段堆内存机制不会在谷歌浏览器上出现,除非谷歌和微软能解决处理器使用率飙升问题。