javascript - 在 Chrome 上使用 RESULT_CODE_KILLED_BAD_MESSAGE 构建大型 JS Blob 崩溃选项卡
问题描述
我正在从大量较小的 blob 客户端构建一个大型(多 gb)Blob,以上传到 Firebase 存储。但是,当我在数组上调用 blob 构造函数时,Chrome 选项卡会冻结一段时间然后崩溃。当 Blob 较小(数百 mb)时,它可以正常工作 Chrome 文档建议我不应该使大 blob 变得如此之快:
创建大 Blob 太快
创建大量 blob,特别是如果它们是非常大的 blob,可能会导致渲染器内存增长过快并导致渲染器端出现 OOM。这是因为渲染器在等待浏览器请求时临时存储 blob 数据。同时,Javascript 可以继续执行。如果 blob 大到足以将其直接保存到文件中,则传输数据可能会花费大量时间,因为这意味着我们需要等待磁盘操作,然后渲染器才能删除数据。
如何更“慢”地创建它以便可以将其分页到磁盘?
解决方案
我意识到问题不是我提供给 Blob 构造函数的数组中 blob 的大小,而是数组的大小。有数百万个小斑点。我更改了制作数组的 MediaRecorder 的 timeSlice,因此它每 10 秒生成大块而不是每 10ms 生成小块,并修复了它。
推荐阅读
- typescript - 递归类型别名属性访问
- phpmyadmin - PHPMyAdmin 输入区域变长了
- flutter - Flutter:调试控制台:字母:I,W是什么意思?
- gateway - APIGEE Spike Arrest 前端集成的最佳实践/实用用法
- .net-core - 为什么使用 Microsoft.Xml.SgmlReader 1.8.18 nuget 构建会输出此警告 MSB2346
- kotlin - 怎么预防!!通过ktlint?
- c# - “|=”运算符缓存静态字段值?
- javascript - 是否可以在函数内调用本地存储并在 Windows.onload 中使用它?
- tfs - TFS 签入:变更集评论策略中的内部错误。加载变更集评论策略策略时出错
- html - 当两个图像相互重叠时,如何允许一个图像溢出容器并隐藏另一个图像?