AFAIK V8有一个已知的hard limit on the length of allowed String
s。试图解析> 500MB字符串会弹出错误:V8/Node.js增加允许的最大字符串长度
Invalid String Length
使用V8标志,以增加堆大小没有任何区别
$ node --max_old_space_size=5000 process-large-string.js
我知道,我应该使用流来代替。但是,有什么方法可以增加最大允许长度String
?
更新:下面从@PaulIrish回答表明,他们就调升到1GB - 但它仍然不是用户可配置的
你碰巧知道这种限制的原因?为什么'String'在V8中具有特定的最大长度? –
它的历史可以追溯到2010年。那时候,512MB是整个堆的限制,我认为决定没有一个字符串可以/应该比堆大;-)(512 MB =一个长度为2^28的UTF-16字符串的内存消耗。) – jmrk
假设你在V8团队中是安全的。谢谢你的一切:) –