0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

重新内存分配的改变让Firefox崩溃次数降低70%

OSC开源社区 ? 来源: OSC开源社区 ? 作者: OSC开源社区 ? 2022-11-29 15:08 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

用户在 Windows 平台上使用 Firefox 时,遇到的最常见的不稳定原因就是崩溃,而且这一现象在 Windows 平台上的严重程度远高于 Linux 和 macOS。因此,Mozilla 花了大量的资源来减少 Firefox 的内存消耗,并仔细监测这些变化。然而,Mozilla 近日透露,他们此前所作出的所有努力都不如他们在 Firefox 105 中部署的一个小改变有效。

首先,要了解为什么在 Windows 上运行的应用程序与其他操作系统相比更容易耗尽内存产生崩溃,就必须了解 Windows 如何处理内存。 所有的现代操作系统都允许应用程序分配一块地址空间。最初在没有数据被存储在其中时,这些块只代表没有物理内存支持的地址范围。当一个应用程序开始使用它所保留的地址空间时,操作系统将拿出一块物理内存来支持它,如果需要的话,可能会交换掉一些现有的数据。Linux 和 macOS 都是这样工作的,Windows 也是如此,只是与其他操作系统相比,Windows 需要执行一个额外的步骤。 在一个应用程序请求了一块地址空间之后,应用需要在能够使用它之前提交使用范围,这个范围需要 Windows 保证它总是能够找到物理内存来支持它。之后,Windows 的行为就像 Linux 和 macOS 一样没什么区别了。

因此,Windows 限制了可以提交的内存大小,即机器的物理内存加上交换文件的大小之和。 提交空间(commit space)是应用面对的硬限制,只要达到这个限制,内存分配就会失败。

Firefox 开发者在分析浏览器崩溃问题时发现,在很多情况下发生崩溃时,用户设备上的可用物理内存仍然很多,但提交空间却耗尽了。 因此他们决定采用一些技巧来规避这一问题,也就是当内存分配失败时,浏览器不是立即崩溃,而是先等待下,然后尝试重新内存分配。虽然这会导致浏览器卡住短暂的几分之一秒,但远比彻底崩溃好得多(当交换文件快满时,Windows 会自动调整它的大小,增加可用的提交空间)。 Mozilla 在 Firefox 105 中应用了这一改变,显著改进了浏览器的稳定性。

下面的图表显示了用户在每一个活跃的使用小时中经历了多少次内存耗尽的浏览器崩溃(崩溃次数减少了 70% 以上,远远超过了 Mozilla 当初的预测)。

139da720-6e52-11ed-8abf-dac502259ad0.png

Mozilla 表示,虽然他们已经在 Firefox 105 中实现了这项改进,但实际上这项改进还没有彻底完成,因为目前延缓主进程会导致标签页崩溃次数小幅增加,这对用户来说也是不愉快的使用体验,虽然没有完整的浏览器崩溃那么烦人,但团队依然在尝试减少这样的情况发生。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    3133

    浏览量

    75470
  • WINDOWS
    +关注

    关注

    4

    文章

    3618

    浏览量

    91788
  • Firefox
    +关注

    关注

    0

    文章

    97

    浏览量

    14089

原文标题:一个小改变,让Firefox崩溃次数降低70%

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    灵活高效双引擎驱动:ZBUFFC语言内存操作更智能!

    ZBUFF库深度融合了智能内存分配算法与实时监测机制,能够自动适应不同场景下的内存需求。其自适应碎片整理功能和错误检测模块,不仅保障了内存使用的高效性,更大幅
    的头像 发表于 08-11 13:27 ?162次阅读
    灵活高效双引擎驱动:ZBUFF<b class='flag-5'>让</b>C语言<b class='flag-5'>内存</b>操作更智能!

    工业APP频繁崩溃?聚徽厂家分享安卓工控机内存碎片化与进程管理优化指南

    与进程管理两大核心维度,深入剖析崩溃根源,并提出系统性优化方案。 一、内存碎片化:工业APP崩溃的隐形推手 1. 内存碎片化的成因与危害 内存
    的头像 发表于 06-10 10:24 ?172次阅读

    如何避免存储示波器再次崩溃?

    制定SOP文档、定期巡检1个月内低 低硬件冗余设计、预防性更换6个月内高 2. 效果评估 指标: 崩溃频率降低≥80%。 数据恢复成功率提升至95%以上。 工具:通过故障数据库统计崩溃次数
    发表于 05-23 14:47

    HarmonyOS优化应用内存占用问题性能优化一

    一、 概述 用户功能的不断增强,应用越来越复杂,占用的内存也在不断膨胀,而内存作为系统的稀缺资源比较有限,当应用程序占用过多内存时,系统可能会频繁进行内存回收和
    发表于 05-21 11:27

    如何使用LAX_CODEGEN启用动态内存分配

    我目前正在探索NXP_MBDToolbox_LAX。lax_codegen 生成的代码基于静态分配。我想管理大型向量,如何使用 LAX_CODEGEN 启用动态内存分配
    发表于 04-10 08:09

    如何查看S32DS中S32平台的内存分配

    大家好,我正在使用 s32DS for s32 平台,我想查看我的项目的内存分配。我想知道分配给对象的内存以及它们被分配到哪里,例如 SRA
    发表于 04-09 07:30

    golang内存分配

    作者:钱文 Go 的分配采用了类似 tcmalloc 的结构.特点: 使用一小块一小块的连续内存页, 进行分配某个范围大小的内存需求. 比如某个连续 8KB 专门用于
    的头像 发表于 03-31 15:00 ?242次阅读
    golang<b class='flag-5'>内存</b><b class='flag-5'>分配</b>

    S32G3板卡上内核崩溃后自动重启怎么解决?

    我目前正在将我的 S32G3 板配置为在内核崩溃后自动重启。但是,尽管在 sysctl.conf 文件中进行了必要的更改并触发了重启,但开发板并未按预期执行自动重启。它显示消息“Rebooting
    发表于 03-31 08:26

    使用OpenVINO?进行推理时的内存泄漏怎么解决?

    使用 OpenVINO? 进行推理时,内存会随着时间的推移而增加,并导致程序崩溃
    发表于 03-06 08:29

    使用DevEco Studio高效解决鸿蒙原生应用内存问题

    在鸿蒙原生应用开发过程中,可能由于种种原因导致应用内存未被正常地使用或者归还至操作系统,从而引发内存异常占用、内存泄漏等问题,最终导致应用卡顿甚至崩溃,严重影响用户体验。
    的头像 发表于 01-16 14:44 ?849次阅读

    RAM内存不足的表现及解决方法

    ) 操作系统会将部分内存数据暂时存储到硬盘上,这个过程称为页面交换。如果频繁发生,说明内存不足。 高CPU使用率 由于内存不足,CPU需要花费更多时间处理页面交换,导致CPU使用率异常升高。 程序
    的头像 发表于 11-11 09:53 ?5163次阅读

    Firefox、Chrome和Puppeteer已支持WebDriver BiDi

    近期,我们与 BrowserStack 一起见证了 WebDriver BiDi 在 BrowserStack 中正式投入使用。并且 WebDriver BiDi 也继续得到了完善,Firefox
    的头像 发表于 11-06 16:35 ?1088次阅读

    转载 golang内存分配

    Go 的分配采用了类似 tcmalloc 的结构.特点: 使用一小块一小块的连续内存页, 进行分配某个范围大小的内存需求. 比如某个连续 8KB 专门用于
    的头像 发表于 09-05 14:12 ?553次阅读
    转载 golang<b class='flag-5'>内存</b><b class='flag-5'>分配</b>

    如何自定义内存控制器的设置

    在FreeRTOS中自定义内存控制器的设置,主要涉及到内存分配策略的选择和配置。FreeRTOS提供了多种内存分配策略,如heap_1、he
    的头像 发表于 09-02 14:28 ?1006次阅读

    堆栈和内存的基本知识

    本文主要聊聊关于堆栈的内容。包括堆栈和内存的基本知识。常见和堆栈相关的 bug,如栈溢出,内存泄漏,堆内存分配失败等。后面介绍软件中堆栈统计的重要性,以及如何使用工具工具软件中堆栈使用
    的头像 发表于 08-29 14:10 ?1119次阅读
    堆栈和<b class='flag-5'>内存</b>的基本知识