在浏览器崩溃之前检测到内存耗尽

Detect memory exhaustion in the browser before it crashes

本文关键字:内存 检测 浏览器 崩溃      更新时间:2023-09-26

当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

参考这个例子。

摘要:代码查看循环所需的时间,如果崩溃,则执行操作。

使用监控浏览器系统的程序应该是一个更好的解决方案,因为浏览器本身并不能完全做到这一点。