Node.js - Распределение не удалось - процесс не хватает памяти даже с использованием анализатора JSONStream
Я пытаюсь прочитать и проанализировать около 12 больших (от 100 МБ + до 500 МБ +) файлов JSON в узле. Я пытался использовать JSONStream (как предлагалось многими другими в качестве решения этой проблемы), чтобы предотвратить следующую ошибку:
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
Тем не менее, я все еще получаю эту ошибку. Это первый раз, когда я пытался использовать потоковое устройство для чтения файлов, как это, поэтому я не уверен, в чем может быть проблема. Прямо сейчас код у меня есть:
for (var i = 0; i < jsonFileArray.length; i++) {
if (jsonFileArray[i].match(/\.json$/)) {
var stream = fs.createReadStream(dirPath + jsonFileArray[i]).pipe(JSONStream.parse(['records', true, 'Categories']));
stream.on('data', function(data) {
console.log('received:', data);
});
}
}
В конце концов я хочу построить кумулятивный объект результата со всеми проанализированными данными из этих файлов, но до сих пор все, что я пробовал, лишало меня возможности анализировать все файлы. Предложения? Руководство?
1 ответ
Вы можете попробовать ветку "утечка памяти" из репозитория JSONStream. Эта ветвь исправляет утечку памяти, однако вы не можете использовать оператор "..".