V8/Node.js 增加允许的最大字符串长度

V8/Node.js increase max allowed String length

AFAIK V8 有一个已知的 hard limit on the length of allowed Strings。尝试解析 >500MB 的字符串将弹出错误:

Invalid String Length

使用 V8 标志增加堆大小没有任何区别

$ node --max_old_space_size=5000 process-large-string.js

我知道我应该改用 Streams。但是,有什么办法可以增加允许的最大 String 长度吗?


更新: 下面来自@PaulIrish 的回答表明他们将其提高到 1GB - 但它仍然不是用户可配置的

抱歉,不,没有办法增加允许的最大 String 长度。

它在源代码中是硬编码的,很多代码都隐含地依赖它,所以虽然已知允许更大的字符串在人们的愿望清单上,但这将是很多工作而且不会发生在不久的将来。

2017 年夏季,V8 将字符串的最大大小从~256MB 增加到~1GB。具体来说,在 64 位平台上从 2^28 - 162^30 - 25V8 ticket.

此更改发生在:

  • V8:6.2.100
  • 铬:62.0.3167.0
  • Node.js: 9.0.0