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團隊中是安全的。謝謝你的一切:) –