首页 > 系统相关 >JavaScript内存限制

JavaScript内存限制

时间:2023-06-15 11:55:46浏览次数:47  
标签:浏览器 JavaScript JS 内存 数组 限制

JavaScript memory limit

JavaScript应用程序可以存储的最大数据量是多少?

我猜这是由浏览器处理的,每个浏览器都有其局限性吗?

如果没有限制,将创建页面文件吗? 如果是这样,那不安全吗?

 相关讨论  

 

  • 有一些限制,尽管这些取决于浏览器。 例如,Firefox对堆栈空间以及过多的CPU消耗有限制。

 

 


AFAIK,没有上限,您的脚本基本上可以使用内存,直到系统用尽内存(包括交换)。没有上限并不意味着您必须全部吃掉,用户可能不喜欢它。


在Chrome和Chromium操作系统中,内存限制是由浏览器定义的,您可以在开发人员工具的命令行中按以下命令通过按F12键来检查内存限制:

1
2
> window.performance.memory.jsHeapSizeLimit
1090519040

在我的Windows 10操作系统上,它约为1 GB。

在Chrom(e / ium)上,您可以通过分配本机数组来避免堆大小限制:

1
2
3
4
var target = []
while (true) {
    target.push(new Uint8Array(1024 * 1024)); // 1Meg native arrays
}

这会使选项卡崩溃,速度约为2GB。之后,Chrom(e / ium)陷入困境,并且不重新启动浏览器就无法重复测试。

我还建议您在深入了解杂草以尝试诊断或测量浏览器中与之相关的任何内存之前,先阅读TrackJS的有关监视JavaScript内存的博客文章。

您也可以在comp.lang.javascript中搜索javascript内存限制。

另请参阅以下堆栈溢出帖子:

  • Javascript中数组的最大大小,建议您最多可以存储232-1 = 4,294,967,295 = 42.9亿个元素。

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

JS9天文图像显示库网站上还有其他知识:处理内存限制。

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

我发现以下一些组件可以很好地扩展CPU性能和内存性能:

  • 微软摩纳哥编辑器

     

    • 几个商业项目使用此方法:

       

    • 邮递员,从v7.1.1-canary08开始
    • VS代码

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

  • 角度:变化检测方法差。

     

    • 对于每个异步事件,将每个绑定(Model-Dom绑定)与其旧值进行比较,以决定是否重新渲染。

       

    • NG1:> 2500个观看者,性能停止
    • NG2:仍然存在相同的问题,但是您有一个很累的解决方法:切换到不可变项并将ChangeDetectionStrategy.onPush遍及整个应用程序以关闭默认的问题策略
  • 反应

     

    • 同样,到目前为止,JS对象的不可变集合仅可扩展。

       

    • create-react-app内部使用Immutable.JS,而Immutable.JS在死之前只能创建大约500k不可变集合。

这是您需要考虑的其他事项:

  • 使用array.slice来操纵数组,以最小化额外的数组分配; array.slice将在适当位置修改数组,这将减少垃圾回收和总体堆大小。
 相关讨论  

 

  • Chrome警告您链接到的网站存在恶意软件。 也许从站点获取信息并直接复制到此处而不是提供链接?
  • 自从我7年前最初写答案以来,去年我已经对它进行了很多重写,但情况已经发生了很大变化,例如HTML5和其他内容。

标签:浏览器,JavaScript,JS,内存,数组,限制
From: https://www.cnblogs.com/chinasoft/p/17482496.html

相关文章

  • Kubernetes 中的 Pod 内存请求(request)和限制(limit)设置多大合适
    Kubernetes中的Pod内存请求(request)和限制(limit)是为容器编排和资源管理提供支持的重要概念。一般来说,合适的内存request和limit需要基于应用程序的内存需求大小、应用程序的容器镜像大小以及在Kubernetes集群中Pod的数量等因素进行考虑。以下是一些关于如何设置Pod的......
  • javascript现代编程系列教程之七——字符集(七)
    Unicode:Unicode是一个字符集(Charset),包含了世界上所有的字符。每个字符在Unicode中都有其唯一对应的数字编号,这就是我们常说的Unicode码。UTF-8:UTF-8是Unicode的实现方式之一。UTF-8使用一至四个字节为每个字符编码,英文字符通常使用一个字节,西欧其他语言的部分字符使用......
  • 用JavaScript绘制树状图(具有分支合并功能)的一种方法(其一)
    需求分析在很多模拟经营游戏中,科技树是一项重要的内容,其为玩家提供了各项技术与其前后置科技间的拓扑关系。这些科技树在表现形式上和普通树状图很相似,但由于其频繁的分支合并,为科技树的绘制带来困难。因此,我们需要一种简单的方法来绘制科技树。比如,当用户输入:<!--为了降低用户......
  • javascript现代编程系列教程之六——parseInt()整数转换
    在JavaScript中,parseInt()函数会将其参数转换为字符串,然后解析该字符串,并返回一个整数或NaN。如果parseInt()函数的参数是一个非常大的浮点数(如1000000000000000000000.5),那么它首先会被转换为科学记数法的字符串形式(即"1e+21"),然后parseInt()会尝试从这个字符串中解析出......
  • javascript现代编程系列教程之五——正零和负零
    在JavaScript中,正零(+0)和负零(-0)都代表数值0,它们在大多数情况下是等价的。然而,在某些特定的场景下,正零和负零的行为会有所不同。除法操作:当0被用作除数时,正零和负零会产生不同的结果:console.log(42/+0);//输出:Infinityconsole.log(42/-0);//输出:-InfinityObject......
  • jvm垃圾回收及内存模型
    1、了解垃圾回收之前,必须先了解内存模型 2、垃圾回收区域  a、首先要标记垃圾,找出垃圾   b、Java垃圾回收(一)_java垃圾回收_头发慢点掉的小马的博客-CSDN博客 垃圾回收器   方法区不需要连续的内存,可以选择固定大小或者可扩展。并且还可以选择不实现......
  • JavaScript学习笔记 - 语法篇 - 一句废话没有版
    写在前面:绝不废话!放心食用JavaScript语法很简单,可以直接在控制台调试理解目录1、变量和常量2、数据类型3、字符串3.1模板字符串3.2字符串的部分常用函数4、数组5、对象6、对象数组&&JSON7、if条件&&三目运算7.1if条件7.2三目运算8、switch9、循环9.0准备工作9.1......
  • 配置云主机swap虚拟内存
    配置云主机虚拟内存:ddif=/dev/zeroof=/mnt/swapbs=block_sizecount=number_of_blockddif=/dev/zeroof=/mnt/swapbs=1Mcount=8192mkswap/mnt/swapswapon/mnt/swapvi/etc/fstab/mnt/swapswapswapdefaults00vi/etc/sysctl.confvm.swappiness=60sysctl-p swa......
  • JavaScript 动态编辑元素某属性值(例如:元素div的class属性)
    元素<divclass="h5-box-search-itemusimglistnodisplay"id="usimglist"></div>(满足条件)动态更新div元素的class属性值://获取目标容器letusimglist=document.getElementById('usimglist');//获取其class的属性值letclassinfo=usimglist.ge......
  • JavaScript中数组(Array)与对象(Object)中的检索方式
    这里只是要说明一点,数组(Array)和对象(Object)都可以用[...]的方式来进行检索[...]中包含的需要是一个表达式,这个表达式的值最终会以字符串的形式被使用因为不论是数组(Array)还是对象(Object),他们都是以键值对的形式存储内容的,而所有的键的数据类型都是字符串(Array好像不是,但是先这样......