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

    文章

    3002

    浏览量

    73883
  • WINDOWS
    +关注

    关注

    3

    文章

    3524

    浏览量

    88426
  • Firefox
    +关注

    关注

    0

    文章

    97

    浏览量

    13650

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

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

收藏 人收藏

    评论

    相关推荐

    转载 golang内存分配

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

    堆栈和内存的基本知识

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

    可以用os_malloc() 分配多少内存?有哪些限制?

    我可以用 os_malloc() 分配多少内存?有哪些限制?
    发表于 07-15 06:32

    esp8266如何正确释放分配内存

    我为结构数组分配内存,这是我的代码: size_t taskAmount; object *tasks = Parsejson(subbuff,sizeof(subbuff),&
    发表于 07-12 12:34

    ESP8266随机崩溃,不会自行启动或重新启动怎么处理?

    看门狗或软件看门狗的帮助下崩溃,它也应该再次重新启动并正常工作。为什么它期待硬重启。 您能否建议问题的根本原因。模块遇到这种情况的可能性有多大,为什么看门狗计时器无法帮助模块启动和运行,以及模块在运行时环境中期望硬重启的可能性有多大。恳请建议。
    发表于 07-11 07:41

    esp_mesh_set_parent函数成功连接后,如何设置重新连接次数

    esp_mesh_set_parent函数成功连接后,断开AP,该函数会不断发起重新连接,如何设置重新连接次数
    发表于 06-28 13:29

    nvs使用时出现的系统崩溃的原因?怎么解决?

    问题:设备使用nvs储存相关参数,设备开始正常使用,在一两个月后读参数的过程中出现系统崩溃,而且不是所以设备都有问题,只有百分之十以内会出现,在重新写完之后读会变正常以下是程序以及崩溃的log
    发表于 06-12 06:27

    ESP32S3+LVGL创建一个界面,请问能只在SPIRAM分配内存,IRAM不分配吗?

    各位前辈好。ESP32S3+LVGL的开发的过程中发现,创建一个界面,会同时在SPIRAM和IRAM分配相同大小的内存。请问能只在SPIRAM分配内存,IRAM不
    发表于 06-06 07:45

    FreeRTOS如何在中断中调用内存分配函数?

    最近在玩FreeRTOS,遇到一个问题,就是不知如何在中断中调用内存分配函数。pvPortMalloc函数中会调用xTaskResumeAll,而这个函数不能再中断调用,所以请问在中断中进行内存
    发表于 05-08 08:25

    Linux内核内存管理之内核非连续物理内存分配

    我们已经知道,最好将虚拟地址映射到连续页帧,从而更好地利用缓存并实现更低的平均内存访问时间。然而,如果对内存区域的请求并不频繁,那么考虑基于通过连续线性地址访问非连续页帧的分配方案是有意义的。该模式
    的头像 发表于 02-23 09:44 871次阅读
    Linux内核<b class='flag-5'>内存</b>管理之内核非连续物理<b class='flag-5'>内存</b><b class='flag-5'>分配</b>

    Linux内核内存管理之ZONE内存分配

    内核中使用ZONE分配器满足内存分配请求。该分配器必须具有足够的空闲页帧,以便满足各种内存大小请求。
    的头像 发表于 02-21 09:29 865次阅读

    ADSP-BF70x API的GPIO Server中为什么需要分配内存空间给回调函数?

    我在使用adsp-bf70x的api时发现,在adi_gpio_Init()调用后为回调函数分配内存空间。这里为什么需要这样做,我不太明白,请大家帮忙解释一下,谢谢!
    发表于 01-12 08:28

    FreeRTOS内存机制详解

    FreeRTOS是一种实时操作系统,它提供了多种内存分配方式,包括动态内存分配和静态内存分配
    的头像 发表于 12-31 16:49 2549次阅读
    FreeRTOS<b class='flag-5'>内存</b>机制详解

    什么是电压崩溃?产生电压崩溃的原因

    什么是电压崩溃?产生电压崩溃的原因  电压崩溃是指电源或电路中的电压突然下降或消失的现象。它可能由多种原因引起,包括电源故障、电路过载、电路短路、电缆接触不良、电子元件老化等。在本文中,我们将详细
    的头像 发表于 12-20 17:05 1795次阅读

    嵌入式软件内存与指针相关问题

    隐性的内存泄露问题 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致
    的头像 发表于 12-07 16:07 414次阅读