Windows 10:谷歌尋求微軟幫助修復Chrome的最大問題
在微軟開始推出Windows 10 May 2020更新後,這家科技巨頭聲稱它已經找到了一種方法來修復基於Chromium的瀏覽器的RAM使用。該修復是”Segment Heap”,它現在包含在Windows 10中,它應該有助於減少一些Win32桌面應用程序的內存使用,如Google Chrome和Edge。
Segment Heap是一項技術性的底層改進,通過“現代堆的實現方式”降低了應用程序的整體內存使用量。換句話說,Segment Heap是開發者需要在他們的應用中使用的東西,微軟已經在其Chromium Edge中使用了這個功能。
微軟的內部測試記錄顯示,Edge瀏覽器的內存使用量減少了27%,如果谷歌能夠實現這一功能,你也可以期待Chrome瀏覽器有一些改善。
根據外媒在今年早些時候發現的Chromium commit,谷歌也打算在Chrome中採用這一功能。不過,谷歌后來澄清說,它對微軟提出的節省RAM的修復措施不會在未來的Chrome版本中啟用,包括85版本。谷歌表示,Segment Heap確實減少了他們瀏覽器的RAM使用量,但最終也導致了性能的退步,包括CPU使用率高。
到目前為止,谷歌一直使用.exe清單的方法來啟用Segment Heap,這確實節省了一些內存,但卻浪費了CPU時間。“節省最多來自於瀏覽器和網絡進程,而成本主要來自於渲染器進程。”谷歌表示。
谷歌新的測試數據表明,如果微軟同意在Windows中添加一個函數,設置或清除ntdll.dll中RtlpHpHeapFeatures中的”segment-heap-enabled “位,那麼使用segment heap而不出現性能退步是相當容易的。
通過代碼檢查可以清楚地看到,在HeapCreate和RtlCreateHeap中添加標誌來強制啟用或強制禁用segment hea也很容易。這些方法可以很好地與manifest配合使用,而manifest本身太不靈活,不是一個完整的解決方案。
Google的高級開發者也在Github上提交了一個正式的帖子,尋求微軟協助實現這兩個標誌。
- HEAP_ENABLE_SEGMENT_HEAP–創建一個segment heap而不是NT堆。
- HEAP_DISABLE_SEGMENT_HEAP–創建一個NT堆而不是segment heap,即使在應用程序清單中請求了segment heap。
“這些標誌將對所有基於Chromium的瀏覽器有用,”谷歌開發者指出。
谷歌仍在試驗Segment Heap,微軟也可以在谷歌進行更多測試的同時幫助谷歌。未來當有辦法成功實現這個功能,或者微軟跳出自己的修復方法時,谷歌會重新考慮對這個功能的支持。