JavaScript 应用程序可以存储的数据量是否有上限?
我猜这是由浏览器处理的,每个都有其局限性?
如果没有限制,是否会创建一个页面文件?如果是这样,那岂不是不安全?
JavaScript 应用程序可以存储的数据量是否有上限?
我猜这是由浏览器处理的,每个都有其局限性?
如果没有限制,是否会创建一个页面文件?如果是这样,那岂不是不安全?
在 Chrome 和 Chromium OS 中,内存限制由浏览器定义,您可以在开发人员工具命令行中按 F12 使用以下命令检查限制:
> window.performance.memory.jsHeapSizeLimit
1090519040
在我的 Windows 10 操作系统上,它大约是 1 GB。
在 Chrom(e/ium) 上,您可以通过分配本机数组来绕过堆大小限制:
var target = []
while (true) {
target.push(new Uint8Array(1024 * 1024)); // 1Meg native arrays
}
这会使选项卡在 2GB 左右崩溃,这发生得非常快。在那之后 Chrom(e/ium) 失控了,如果不重新启动浏览器就不可能重复测试。
我还建议您在深入研究尝试诊断或测量浏览器中任何内存相关的杂草之前阅读 TrackJS 的关于监控 JavaScript 内存的博文。
您还可以在 comp.lang.javascript 中搜索javascript memory limit。
另请参阅这些 Stack Overflow 帖子:
Javascript 中数组的最大大小,这表明您最多可以存储 2 32 -1 = 4,294,967,295 = 42.9 亿个元素。
JS9 天文图像显示库网站上还有其他知识:处理内存限制。
(我试图找到一个好的答案,这里提供的“没有上限”的答案对我来说只是愚蠢的。我不能遇到数百万美元项目的生产问题并向管理层说,“好吧,我认为没有上限,一切都会好起来的。”尝试进行概念验证,例如在您选择的 JavaScript UI 框架中加载大量组合框控件等。您可能会发现您的框架性能有所下降。 )
以下是我发现在 CPU 性能和内存性能方面都具有很好扩展性的一些组件:
以下是一些众所周知的性能下降的框架示例:
这里还有一些其他的事情需要考虑:
AFAIK,没有上限,您的脚本基本上可以使用内存,直到系统耗尽内存(包括交换)。没有上限并不意味着你必须吃完它,用户可能不喜欢它。
Firefox 支持选项“ javascript.options.mem.max ”,如果您搜索该选项,您可以找到有关人们认为可行的合理值的讨论。
不知道有多少人会费心去那里设置它,但就我自己而言,我将它设置为 128000(即 128M)。
我认为内存限制来自浏览器。我们可以使用 DevTools 来解决这个问题。就像在 chrome 中一样,按 F12 并输入 window.performance.memory 你可以看到内存信息。
window.performance.memory
Javascript 程序没有内存限制。您的脚本可以占用您机器上的所有 RAM。但是,不建议用完用户机器上的所有内存。如果您正在处理大量数据,我建议您检查缓存。