我的Node.js应用程序的一部分涉及从用户接收字符串作为输入并将其存储在JSON文件中。JSON本身显然对此没有限制,但是Node可以处理成JSON的文本量是否有上限?
V8(JavaScript引擎节点在建),直到 非常 最近有一个关于1.9
GB的堆大小硬限制
。
由于破坏了本机插件周围的V8
API更改,因此节点v0.10停留在较早版本的V8(3.14)上。节点0.12将更新到最新的V8(3.26),它将破坏许多本机模块,但为提高1.9
GB的堆限制打开了大门。
因此,单节点进程最多可以保留1.9 GB的JavaScript代码,对象,字符串等的 总和 。这意味着字符串的最大长度在1.9 GB以下。
您 可以 使用Buffer
s 来解决此问题,s将数据存储在V8堆之外(但仍在进程的堆中)。只要您在JavaScript变量中没有超过1.9
GB的数据,节点的64位构建几乎就可以填满您的所有RAM。
综上所述,您绝对不能接近这个极限。处理大量数据时, 必须 将其作为流进行处理。您一次最多不能拥有超过几兆字节的内存。好消息是节点特别适合处理流数据。
您应该问自己一些问题:
关于您实际上要完成的工作,您发布的问题实际上是非常模糊的。有关更具体的建议,请使用更多信息更新您的问题。
如果您希望数据永远不会那么大,则只需在输入上抛出10 MB的合理限制,然后将其全部缓冲并使用即可JSON.stringify
。
如果您希望处理更大的数据,则需要直接将输入流式传输到磁盘。如果需要在数据进入磁盘之前进行处理/修改,请查看以转换流。例如,有些模块处理流JSON。
问题内容: 我有一个字符串定义为 字串xx 我可以分配的字符数有限制吗? 2)我正在将用户输入分配给此字符串xx。70%的人只说一个字。有时他们会说一个大句子,所以想知道可以吗?还是有更好的Java做法? 问题答案: 您可能已经搜索过一个常见问题,但无论如何我都会再次回答。 我可以分配的字符数有限制吗? 它的Integer.MAX_VALUE或2 ^ 31-1或大约20亿。在达到此大小之前,您更有
问题内容: 我正在使用Java查询Solr服务器以获取结果,这些结果的ID在我感兴趣的一组已知ID中。 我想获得这些我感兴趣的结果的最佳方法是创建一个长查询字符串,看起来像这样: 我在发出请求之前生成了String,并且我最终想要发出的请求中包含1500个以上的ID。我正在使用HTTP POST这样进行查询: 如果将查询限制为仅前1000个id,它将成功执行,并且可以按预期返回结果。但是,如果我增
我有一个随机地址字符串,如 我想将其拆分为具有两个条件的字符串数组: 该字符串数组的每个元素的长度小于或等于20 字符串数组的元素没有尴尬的结尾 例如,每20个字符拆分将产生: 但正确的输出是: 注意字符串数组中的每个元素是如何小于或等于20的。 以上是我对这段代码的输出:
问题内容: 我来自php背景,在php中,有一个函数可以告诉您数组中使用了多少个元素。 数组有类似的方法吗?谢谢。 问题答案: 是的(类属性,而不是方法):
问题内容: 我正在尝试使用jQuery Ajax将页面中的数据数组发送到MVC Action。这是我的jQuery代码: 让我解释一下。我有一个动态生成的HTML表,我需要将此数据存储到数据库中。在jQuery中,我遍历表有一个循环,我将数组中每一行的数据存储起来。然后,我使用Ajax将这些数据传递到MVC Action中。 这是我的问题开始的地方…我已经意识到有时会按预期进行,但是有时我会从Aj
所以我们有一个例子,我们会有一个对象,其中key是id(int),值是字符串。但我们注意到,大多数时候,我们根据字符串查找id,所以我们决定将其反转并使字符串成为key,值是id。因为这样就不用遍历每个项目并比较值,我们可以只执行。下面是我们所做的示例。 下面是旧实现的示例: 以下是新实现的示例: 我知道现在字符串是键,可以为相同的字符串获取相同的id。但是现在这个字符串可能非常大(可能性很小,但