浏览器是否可以对可以存储在 JavaScript 对象中的数据量施加任何限制?如果是这样,有什么方法可以检测到该限制吗?
默认情况下,Firefox 似乎不会:
var data;
$("document").ready(function() {
data = [];
for(var i = 0; i < 100000000000; i++) {
data.push(Math.random());
}
});
这会继续消耗越来越多的内存,直到我的系统耗尽为止。
由于我们无法检测到可用内存,有没有其他方法可以告诉我们正在接近该限制?
更新
我正在开发的应用程序依赖于非常快的响应时间才能使用(这是核心卖点)。不幸的是,它还有一个非常大的数据集(比弱客户端机器上的内存要大得多)。通过战略性地抢先加载数据(猜测将点击什么),可以大大提高性能。当猜测不正确时,从服务器加载数据的回退工作会起作用,但服务器往返并不理想。充分利用我可以使用的每一位内存,使应用程序尽可能提高性能。
现在,它允许用户“配置”他们的性能设置(最大数据设置),但用户不想管理它。此外,由于它是一个 Web 应用程序,我必须处理用户对每台计算机的设置(因为强大的桌面比旧的 iPhone 拥有更多的内存)。如果它只是对系统上可用的内容使用最佳设置,那就更好了。但是猜测太高也会导致客户端计算机出现问题。