Node.js使用fs.readFileSync读取大文件
我尝试使用具有96GB RAM的服务器上的 将大文件( )加载到内存中。
问题是它失败并显示以下错误消息
RangeError:尝试分配大于最大大小的缓冲区:0x3fffffff字节
不幸的是,我没有发现增加Buffer的可能性,这似乎是一个常数。
如何克服此问题并使用Node.js加载大文件?
谢谢!
回答:
来自一个快乐的常见问题解答:
节点进程的内存限制是多少?
当前,默认情况下,v8在32位系统上的内存限制为512mb,在64位系统上的内存限制为1gb。可以通过将–
max_old_space_size设置为最大〜1024(〜1
GiB)(〜32位)和〜1741(〜1.7GiB)(〜64位)来提高限制,但是建议您拆分单个进程如果您要达到内存限制,则分成几个工作组。
如果您显示有关文件中的内容以及您对其进行的操作的更多详细信息,我们可能会提供一些有关如何分块使用它的想法。如果是纯数据,则您可能希望使用数据库,并让数据库根据需要从磁盘获取内容并管理内存。
以下是有关该问题的最新讨论:https :
//code.google.com/p/v8/issues/detail?id=847
并且,这是一篇博客文章,声称您可以编辑V8源代码并重建节点以消除内存限制。您可以自行决定尝试此操作。
以上是 Node.js使用fs.readFileSync读取大文件 的全部内容, 来源链接: utcz.com/qa/428290.html