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

标签 javascript variables yui yui-datatable

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

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

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

最佳答案

是的,对象和数组有存储限制。它们足够大,对于大多数目的来说,都是理论上的。与语言相比,VM 对您的限制更大。

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

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

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

虚拟机,可能还有垃圾收集器,在您接近语言限制之前就会开始长时间挂起。一些实现会有较小的限制,尤其是较旧的或解释器。由于 JS 规范在大多数情况下没有指定最小限制,因此这些限制可能是实现定义的并且可能要低得多(关于最大参数数量的 this question 对此进行了讨论)。

有了一个良好的优化 VM,它会尝试跟踪您使用的结构,在该大小下,将导致足够的开销,以至于 VM 可能会回退到为您的对象使用映射(理论上可以定义一个表示那么多数据的结构,但不是很实用)。 map 有少量开销,并且随着大小的增加,查找时间会变长,因此您会看到性能影响:只是不是任何合理的对象大小。

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

关于javascript - javascript变量有存储限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194088/

相关文章:

javascript - 计算两位小数 | JavaScript 计算器

javascript - PHP/Ajax/JQuery 响应无法正常工作

Javascript 点击计数并提交到文本区域

python - 将字典转换为字节并再次返回python?

c - 如何使我在c中使用的函数由变量控制

javascript - YUI 是否允许您对数据表中的日期进行排序?

javascript - 如何使用 Javascript 数据表

javascript - Canvas 上旋转弧线的丑陋效果

javascript - js 变量到 css [剪辑路径图片库]

css - 使用 YUI 是否可以添加另一个粘在页面底部的 css 页脚?