JavaScript 内存限制

2023-11-25

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.javascriptJavaScript内存限制.

另请参阅这些 Stack Overflow 帖子:

  1. Maximum size of an Array in Javascript, which suggests you can store up to 232-1 = 4,294,967,295 = 4.29 billion elements.

  2. JavaScript 函数可以接受的最大参数数量

JS9天文图像展示库网站上还有更多知识:处理内存限制.

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

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

  1. Microsoft Monaco editor
    • This is used by several commercial projects:
      1. 邮递员,从 v7.1.1-canary08 开始
      2. VS Code

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

  1. Angular: Poor change detection approach.
    • For each async event, compare each of the bindings (Model-Dom binding) to its old value to decide if to re-render.
      1. NG1:>2500 名观察者,性能逐渐停止
      2. NG2:同样的问题仍然存在,但您有一个漫长而疲惫的解决方法:切换到不可变并在您的应用程序中传播 ChangeDetectionStrategy.onPush 以关闭默认的有问题的策略
  2. React
    • Again, Immutable collections of JS objects only scale so far.
      1. create-react-app内部使用了Immutable.JS,而Immutable.JS在消亡之前只能创建大约500k个不可变集合。

以下是一些需要考虑的其他事项:

  1. Use array.slice 用于操作数组最大限度地减少额外的数组分配; array.slice 将就地修改数组,这将减少垃圾收集和总体堆大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 内存限制 的相关文章

  • 当代理关闭并启动时,Node JS mqtt 客户端未收到订阅的消息

    我创建了一个 mqtt Node js 客户端 我的连接选项如下 mqttOptions clientId 100 keepAlive 1000 clean false reconnectPeriod 1000 will willMessa
  • 在 sinon.js 中存根和/或模拟类?

    我已经为我的应用程序创建了一个数据库包装器 如下所示 为了测试它 我显然想替换实际的数据库 我可以创建一个新类来模拟query方法并捕获那里的所有输入 但是使用sinon js看起来更合适 但是我该如何使用它呢 Is the mock or
  • 如何使用 jQuery 添加/附加到外部 JSON 文件

    我有一个 json 文件 我想构建一个表单 允许我在文件中添加 编辑元素 是否有 jQuery 函数 方法允许我在外部 json 文件中发布和追加元素 不确定这是否有帮助 但当前的 json 结构如下 cast director genre
  • 如何在 HTML 链接中使用 JavaScript 变量

    我正在开发的网站有一个标签指向与网站所具有的 URL 不同的 URL 我想做的是绕过使用下面的 trueURL 标记来查找网页的网址 因为我需要它来构造一些内部锚点 因为我需要网站的实际网址 以便内部锚点正常工作 我遇到的问题是我不知道应该
  • 将全局样式表与故事书和角度结合使用 - SassError:SassError:预期“{”

    几天来 我一直在尝试将全局样式表集成到故事书中 我已经从 sass 支持文档中集成了 webpackFinal 配置 在 storybook 目录中 我创建了一个 scss loader scss 文件 该文件应该加载全局样式表 在 pre
  • 关联数组不按顺序排列

    关联数组的顺序是这样的 A00 gt value1 A01 gt value2 B01 gt value3 B02 gt value4 但是在 for 循环之后数组顺序不起作用 for var key in obj3 code list1
  • 如何使用画布调整图像大小然后裁剪图像

    我已经知道如何 gt 调整图像大小 var image document getElementById myImage canvas document createElement canvas ctx canvas getContext 2
  • jquery如何获取右、左、上、下箭头键值

    我使用了下面的代码 每当单击箭头键 左 右 上 下 时 我得到的键值为 0 任何人都可以帮忙解决这个问题吗 document keypress function e alert key value e which 如何获取 上 下 右 左
  • 如何通过两个输入文本字段组合表中的搜索?

    我的桌子看起来像这样 table tr td Apple td td Green td tr tr td Grapes td td Green td tr tr td Orange td td Orange td tr table 搜索的j
  • javascript 中的正则表达式和分隔符

    我不太擅长正则表达式 我需要一些帮助 但我被困住了 这就是我得到的 编辑 现在工作正常 看看 http jsfiddle net oscarj24 qrPHk 1 http jsfiddle net oscarj24 qrPHk 1 这就是
  • 有没有办法强制浏览器刷新/下载图像?

    我遇到一个问题 用户报告他们的图像没有上传 而旧图像仍然存在 仔细检查后 新图像就在那里 它们只是与旧图像具有相同的名称 我在上传时所做的是出于搜索引擎优化的目的重命名图像 当他们删除图像时 旧索引变得可用并被重用 因此它具有相同的图像名称
  • 根据路由动态加载 Node.js 模块

    我正在使用 Express 在 Node js 中做一个项目 这是我的目录结构 root start js server js lib api user getDetails js user register js The lib api
  • 如何通过 Web-Workers 传递自定义类实例?

    由于 Web Worker JSON 在线程之间序列化数据 因此这样的方法不起作用 worker js function Animal Animal prototype foobar function self onmessage func
  • 如何将多种语言设置放入单个 .clang-format 文件中

    我想为 java javascript 和 c 创建一个 clang 格式 我知道如何转储单一语言的示例配置 但不知道如何合并这 3 个配置文件 有关如何将多种语言配置放入单个文件中的示例 BasedOnStyle LLVM IndentW
  • Svg 点击事件无法正常工作

    我试图让我的 SVG 看起来像一个 饼形 看起来一切都很好 此外 我希望它们每个都有不同的点击事件 function one alert 1 function two alert 2 function three alert 3 funct
  • 用角度js中的字母过滤列表

    我在表格中显示了一个列表 我需要使用名称的第一个字母来过滤结果 在列表上方我有一个字母 A B C D 等等 单击后 字母列表将按名字过滤 例如 列表详细信息是Apple Boy Bridge点击后A Apple将显示 我必须过滤国家名称以
  • 时间序列折线图与轴不同步

    本实验基于这个d3官方例子 http bost ocks org mike path 我想要实现的是可视化时间序列数据的最后 x 分钟 我有这个代码的副本jsfiddle http jsfiddle net 225dC 3 单击以添加新数据
  • Google Calendar API:获取指定日期的空闲时段列表

    我需要获取我的谷歌日历中的免费时段列表 现在我只是获取事件列表 我在用谷歌日历 https www npmjs com package google calendar npm google calendar events list calO
  • JSON 数据的动态表单(不同类型)

    我尝试使用 JSON 中的数据在 AngularJS 中创建动态表单 我有这个工作 HTML p p
  • 返回语句后的声明

    function f return f1 function f1 return 5 f returns 5 为什么这有效 之后声明局部函数有什么好处return 这是好的做法吗 它之所以有效 是因为函数声明都是由解释器在第一次传递时评估的

随机推荐

  • 影响 gcc 中的函数克隆/复制/持续传播

    跑步时gcc使用 optimizations on 时 当它认为函数位于热路径中或有常量传播到函数参数时 它会克隆 重复 C 函数 更具体地说 这似乎是由fipa cp clone option 有什么办法可以影响这个吗 例如 使用某些属性
  • 在 NHibernate 3 中使用 Linq 时的预加载

    我需要在 NHibernate 3 trunk 版本中急切加载 Linq 的帮助 我有这样的多对多关系 public class Post public int Id get set public IList
  • Android WebView 编译表单并使用 Javascript 提交

    我正在尝试填写此表格 http www lbalberti it whatsup asp codist 57247 我能够向两个文本框插入值 但按钮不起作用 Override protected void onCreate Bundle s
  • 如何使用FireMonkey截图(多平台)

    我还没有找到在 FMX Platform 中获取屏幕截图的功能 无论如何 其他地方都没有 对于 VCL 有很多答案 stackoverflow google 但是如何在 Windows 和 Mac OS X 中获取图像 位图或其他 的屏幕截
  • 如何从单个 Docker 映像定位多个 .NET Core 版本?

    我有一个目标库 NET 标准 2 0 为了验证兼容性 我想使用 NET Core 的当前版本和长期支持 LTS 版本运行单元测试 当写这个问题时 这些是 Target Framework Target framework moniker T
  • 如何以编程方式动态地为 UIButton 的背景图像着色?

    我正在开发一个应用程序 或者更确切地说是一些可重复使用的 框架 一旦它起作用我很乐意分享 在此应用程序中 用户应该能够从颜色主题列表中进行选择 因此 应用程序必须能够以某种相当动态的方式为其 UI 元素着色 对于按钮 所有着色都不起作用 此
  • 如何反序列化 JSON 数组?

    我在 CXF 中使用 Jackson 来序列化 反序列化数据 不幸的是 我在配置 CXF Jackson 来反序列化 JSON 数组时遇到困难 我很乐意帮助解决这个问题 到目前为止 大部分 json 数据都是对象格式 即 objectCol
  • 你可以为Python中的方法设置属性吗[重复]

    这个问题在这里已经有答案了 我想知道是否可以使用 setattr 将属性设置为类中的方法 如下所示 因为当我尝试时 我收到一个错误 该错误将在代码后显示 class Test def getString self var setattr s
  • 检查用户是否已在客户端登录

    有没有一种安全的方法来检查用户是否已登录应用程序而不是检查用户计算机中是否存在 sid cookie 我想允许用户仅在登录后才能继续访问页面上的某些链接 我在服务器端进行登录验证 但想避免请求行程 纯 JS 或 JQuery 解决方案将不胜
  • 为什么 ECDSA 会为相同的数据生成不同的签名,而 RSA 不会?

    考虑以下使用 RSA 的代码 Example byte raw Encoding Default GetBytes Hello World RSA key RSA Create for int index 0 index lt 5 inde
  • 无法使用 IDEA 和 SBT 运行 LWJGL

    我已经在脑子里挠了一个多小时了 谷歌上似乎没有任何东西能给我一个决定性的答案 我在用着IntelliJ IDEA 13 1 3使用 scala 和 sbt 插件 Scala 2 11 1 and SBT 0 13 我自以为很聪明 将 LWJ
  • 如何从长十六进制字符串创建Python字节对象?

    我在字符串中有一长串十六进制数字 例如 000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44 只是更长 几千字节 python 2 6 3 中是否有
  • 为什么 AddMvc 需要 Action 而不是 MvcOptions?

    我正在学习 ASP NET Core 我发现注册 MVC 服务如下所示 public void ConfigureServices IServiceCollection services services AddMvc options gt
  • 有没有Python函数可以检查生成器是否启动?

    我尝试定义一个生成器函数mycount 可以使用生成器功能重置send 0 如下例所示 一切正常 除了我使用时send 0 在尚未启动的新生成器对象上 在这种情况下 它给出了TypeError 是否有任何函数可以检查发电机是否已启动或者我是
  • Android Facebook ApiException:无效的应用程序

    当我尝试使用除我的开发者帐户之外的其他帐户登录时 我收到 Facebook ApiException Invalid Application 错误 甚至我的沙盒模式也已关闭 因为我已经检查了具有相同问题的其他帖子 提前致谢 10 24 17
  • 使用netcat时如何根据请求有条件地响应

    我正在尝试仅使用 Windows 批处理脚本来设置 Web 服务器 我已经想出了以下脚本 echo off setlocal enabledelayedexpansion for l a in 1 0 2 do type tempfile
  • Karate DSL 框架是否能够以 url 编码格式传递 POST 请求?

    我的项目中的某些 API 只能使用编码格式通过 OAuth 2 0 进行访问 我可以使用 POSTMAN 手动提交 POST 因为它具有 x www form urlencoded 功能来发送请求 附图 作为解决方法 我创建了一个 java
  • 如何使用 SharedAccessSignature 访问 blob

    我正在尝试访问存储在 Windows Azure 中的私有容器中的 blob 该容器具有共享访问签名 但是当我尝试时 要访问 blob 我收到 StorgeClientException 服务器无法验证请求 请确保形成授权标头 正确包括签名
  • jQuery:找到前两个孩子

    使用 jQuery 查找父元素的前两个子元素 如果其中一个是父元素 的最有效方法是什么 h1另一个是p 我的代码现在无法运行 我想使用最佳实践来完成此任务 CSS div gt display none HTML div h1 Headin
  • JavaScript 内存限制

    JavaScript 应用程序可以存储的数据量是否有最大限制 我想这是由浏览器处理的 每个浏览器都有其局限性 如果没有限制 是否会创建页面文件 如果这样的话 那不是没有安全感吗 在 Chrome 和 Chromium OS 中 内存限制由浏