首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript变量有存储限制吗?

javascript变量有存储限制吗?
EN

Stack Overflow用户
提问于 2015-05-12 22:37:28
回答 3查看 18.9K关注 0票数 18

javascript变量有存储容量限制吗?

我正在设计一个YUI datatable,我从数据库中获取数据并将其存储在js对象中,然后在需要的地方提取数据并更新YUI datatable。现在在Dev中,我只有很少的记录,并且它的存储是正确的。在生产中,我可能有1000条记录,这个js对象能够存储所有这些1000条记录吗?

如果不能,我将在jsp中的隐藏文本区域上创建,并将数据存储在那里

EN

回答 3

Stack Overflow用户

发布于 2015-05-12 22:45:18

是的,对象和数组有存储限制。它们足够大,对于大多数目的来说,都是理论上的。您将更多地受到VM的限制,而不是语言。

在您的特定情况下(向客户端发送数千个项目),无论是JSON、JavaScript还是JSP页面上的纯文本,您都将遇到相同的问题:客户端内存。与您遇到语言限制相比,客户端更有可能耗尽可用的系统内存。对于数以千计的小对象来说,这应该不是问题。

例如,在the spec at 15.4.2.2中显示的Arrays have a limit of 4.2 billion items。这是由于长度为32位计数器造成的。假设每个元素都是一个整数,那么就可以在一个数组中存储16 in的数字数据。

对象的语义更复杂,但大多数处理对象的函数最终都使用数组,因此在大多数实际场景中,您只能使用42亿个键。同样,这是超过16 to的数据,不包括保存引用的开销。

VM,可能还有垃圾收集器,在你达到语言的极限之前,会挂起很长一段时间。一些实现将有较小的限制,特别是较旧的或解释器。由于JS规范在大多数情况下没有指定最小限制,因此这些限制可能是由实现定义的,而且可能会低得多(this question on the maximum number of arguments讨论了这一点)。

使用一个好的优化VM来跟踪您使用的结构,在这种大小下,将导致足够的开销,使得VM可能会重新为您的对象使用映射(理论上可以定义一个表示那么多数据的结构,但不是非常实用)。映射的开销很小,并且查找时间随着大小的增加而变长,因此您将看到性能方面的影响:只是不是在任何合理的对象大小下。

如果你遇到另一个限制,我怀疑它将是65k元素(2^16),as discussed in this answer。找到一个支持少于65k元素的实现似乎不太可能,因为大多数浏览器都是在32位体系结构成为标准之后编写的。

票数 24
EN

Stack Overflow用户

发布于 2015-05-12 23:01:07

限制取决于浏览器的可用内存。所以每个PC,Mac,Mobile设置都会给你一个不同的限制。我不知道你的一条记录需要多少内存,但我猜1000条记录应该可以在大多数机器上工作。

:你应该避免在简单的变量中存储大量的数据量,这取决于记录内存,这会减慢整个网站的行为。使用普通计算机的用户可能会看到丑陋的滚动效果、延迟的悬停效果等。

我建议您使用本地存储。很抱歉,我不知道YUI库,但我非常确定您可以指向您的datatable源代码的存储位置。

票数 0
EN

Stack Overflow用户

发布于 2015-05-12 22:46:21

JavaScript对象max js object limit是有限制的。我建议使用session对象,因为这听起来像是您想要做的事情。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30194088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档