Dän*_*änu 55 javascript browser memory
JavaScript应用程序可以存储最大数量的数据吗?
我想这是由浏览器处理的,每个都有其局限性?
如果没有限制,是否会创建页面文件?如果是这样,那不是不安全吗?
Joh*_*ski 29
在Chrome和Chromium OS中,内存限制由浏览器定义,您可以通过按F12在Developer Tools命令行中使用以下命令检查限制:
> window.performance.memory.jsHeapSizeLimit
1090519040
Run Code Online (Sandbox Code Playgroud)
在我的Windows 10操作系统上,它大约是1 GB.
在Chrom(e/ium)上,您可以通过分配本机数组来解决堆大小限制:
var target = []
while (true) {
target.push(new Uint8Array(1024 * 1024)); // 1Meg native arrays
}
Run Code Online (Sandbox Code Playgroud)
这会使标签崩溃大约2GB,这种情况发生得非常快.之后Chrom(e/ium)变得混乱,如果不重新启动浏览器就无法重复测试.
我还建议您阅读TrackJS关于监控JavaScript内存的博客文章,然后再深入了解试图诊断或测量浏览器中相关内存的杂草.
您还可以搜索comp.lang.javascript以获取javascript内存限制.
另请参阅此Stack Overflow帖子:Javascript中数组的最大大小,建议您最多可以存储2 32 -1 = 4,294,967,295 = 42.9亿个元素
(我试图找到一个好的答案,这里提供的"没有上限"答案对我来说很愚蠢.我不能为一个价值数百万美元的项目遇到生产问题,并对管理层说:"好吧,我假设没有上限,一切都会好的."尝试做一个概念验证,例如在你选择的JavaScript UI框架中加载大量的组合框控件等等.你可能会发现你的框架有一些性能下降. )
以下是一些具有众所周知的性能下降的框架示例:
小智 6
Firefox支持选项“ javascript.options.mem.max ”,如果进行搜索,则可以找到有关人们认为可行的明智价值观的讨论。
不知道有多少人会打扰到那里进行设置,但是我自己说我将其设置为128000(即128M)。
小智 5
我认为内存限制来自浏览器。我们可以使用 DevTools 来解决这个问题。就像在 chrome 中一样,按 F12 并输入 window.performance.memory 您可以看到内存信息。
window.performance.memory
Run Code Online (Sandbox Code Playgroud)
