我正在解析 ~250K XMLs 并将数据加载到 SQLite 数据库中。我在具有 8GB 内存的 Mac OS X 笔记本电脑上cheerio
使用节点版本 10.15.1。better-sqlite3
我正在readdirSync
处理约 250K 文件的整个文件夹,并解析 XML 文件并使用 10K 批次的事务加载提取的数据。我正在使用--max_old_space_size=4096
但仍然收到FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory。
现在,如果我处理 100K 文件,然后退出节点,然后重新启动并处理剩余的 ~150K 文件,那么一切正常。但是,我宁愿一次性完成,因为这是必须在无人看管的情况下完成的事情。考虑到我的限制,我还能做些什么吗?我无法使用内存更大的机器,因为我无权访问。我可以尝试增加--max_old_space_size
一点,或者我可以尝试做小批量的交易,但我不确定这是否会有所帮助(我尝试了每个交易 8000 个文件而不是 10K,但这也耗尽了内存)。现在唯一似乎有帮助的是在两者之间退出节点。反正我可以模拟吗?也就是告诉node释放所有内存,假装重启了?还有其他想法吗?