在浏览器崩溃之前检测到内存耗尽
Detect memory exhaustion in the browser before it crashes
当JavaScript客户端应用程序使用过多内存时,浏览器将崩溃或引发无法恢复或交换的异常,就像80年代一样。
浏览器是否表示它们几乎达到选项卡的可用内存限制
理想情况下,我希望能够捕捉到一个事件,当浏览器内存不足时,我可以用JavaScript拦截该事件,以便自动恢复到应用程序的轻版本,或者告诉我的用户去买一台新电脑/手机。
我知道Chrome性能工具允许对使用过的内存进行不精确的查询,这是第一步,但可能不足以检测内存限制。
不,不幸的是,没有跨浏览器的方法可以检测到这一点。在这个答案中对此进行了一点讨论。
有window.performance.memory
,但它仅在Chrome中可用。
我也不知道有什么真正好的解决办法。你可能会检查旧浏览器或没有特定功能的浏览器("功能检测"),并建议使用旧浏览器的用户使用你的"轻"版本,因为这些人最有可能拥有低功耗设备。
另一种可能性是看看一些特定的操作需要多长时间,如果它们需要太长时间,那么推荐轻型版本。再一次,这是一个非常直率的解决方案。
答案在于浏览器的速度。
它不能很正确地显示内存以防止指纹提取。
所以,http://thisbeautiful.w3spaces.com/notbad.htm包含以如下间隔循环的代码:
JavaScript:
momentum=Date.now();for(itr=1;itr<770;itr++){};momentumTwo=Date.now()-momentum;if(momentumTwo>3){ //take action
} //and every second if you wrap in into an interval
参考这个例子。
摘要:代码查看循环所需的时间,如果崩溃,则执行操作。
使用监控浏览器系统的程序应该是一个更好的解决方案,因为浏览器本身并不能完全做到这一点。
相关文章:
- 如何检测是否有溢出
- 如何检测用于WebGL的专用或集成显卡
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- 如何使用密码检测网络中的状态连接
- 使用JavaScript检测Flash
- 在不阻止默认行为的情况下检测IE10中的缩放
- 检测个位数整数时正在转换毫秒
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 动态插入的表:JQuery未检测到最后一行
- 检测页面上某个元素中选择(突出显示)或单击的内容
- "检测到可能的EventEmitter内存泄漏”;使用Gulp+Watchify+Factor捆绑包
- Node.js”;检测到EventEmitter内存泄漏”;
- 在浏览器崩溃之前检测到内存耗尽
- 警告:可能检测到事件发射器内存泄漏.添加了 11 个 AppUp > 听众.使用 emitter.setMaxListe
- Socket.io 聊天应用程序显示检测到的事件发射器内存泄漏.添加了 11 位听众.使用 emitter.setMax
- 检测代码中的node.js/javascript内存泄漏
- 如何检测在JavaScript中触发垃圾收集的内存分配
- 如何检测JavaScript中的内存限制?
- 如何检测浏览器中使用的内存过多