gpt4 book ai didi

JavaScript 内存限制

转载 作者:IT王子 更新时间:2023-10-28 23:28:26 26 4
gpt4 key购买 nike

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 关于 Monitoring JavaScript Memory 的博文在您深入杂草试图诊断或测量浏览器中与内存相关的任何内容之前。

您也可以在 comp.lang.javascript 中搜索 javascript memory limit .

另请参阅这些 Stack Overflow 帖子:

  1. Maximum size of an Array in Javascript ,这表明您最多可以存储 232-1 = 4,294,967,295 = 42.9 亿个元素。

  2. Maximum number of arguments a JavaScript function can accept

JS9天文影像展示库网站有补充知识:Dealing with Memory Limitations .

(我试图找到一个好的答案,而这里提供的“没有上限”的答案对我来说简直是愚蠢的。我不能在一个值(value)数百万美元的项目中遇到生产问题并向管理层说, “好吧,我假设没有上限,一切都会好起来的。”尝试做一个概念验证,例如在您选择的 JavaScript UI 框架中加载大量组合框控件等。您可能会发现您的框架有一些performance degradation .)

以下是一些我发现在 CPU 性能和内存性能方面都可以很好扩展的组件:

  1. Microsoft Monaco editor
    • 这被多个商业项目使用:
      1. postman ,自 v7.1.1-canary08 起
      2. VS 代码

以下是一些众所周知的性能下降的框架示例:

  1. Angular:糟糕的变更检测方法。
    • 对于每个异步事件,将每个绑定(bind)(Model-Dom 绑定(bind))与其旧值进行比较,以决定是否重新渲染。
      1. NG1:>2500 名观察者,表演陷入停顿
      2. NG2:同样的问题仍然存在,但您有一个很累人的解决方法:切换到不可变对象(immutable对象)并将 ChangeDetectionStrategy.onPush 传播到您的应用程序中,以关闭默认的有问题的策略
  2. react
    • 同样,JS 对象的不可变集合只能扩展。
      1. create-react-app 内部使用 Immutable.JS,而 Immutable.JS 在死前只能创建大约 50 万个不可变集合。

还有一些其他需要考虑的事情:

  1. 使用 array.slice for manipulating arrays尽量减少额外的数组分配; array.slice 将修改数组,这将减少垃圾收集和整体堆大小。

关于JavaScript 内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2936782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com