nodejs kein Speicher mehr für die Verarbeitung von CSV-Dateien

Ich habe eine Reihe von SO-Fragen zu Node-Js durchgelesen, die nicht mehr genügend Speicher haben, aber ich habe nichts gesehen, was meiner Situation ähnelt.

Ich versuche, ungefähr 20 GB Daten in 250 CSV-Dateien (also ~ 80 MB / Datei) zu verarbeiten. Starten Sie das Knotenskript mit--max-old-space-size=8192 auf einem Server mit 90 GB freiem Speicher unter Verwendung des Knotens v5.9.1. Nach 9 Minuten wird das Skript mit einem Speichermangel beendet.

Ich bin neu in der Knotenprogrammierung, aber ich dachte, ich habe das Skript geschrieben, um Daten zeilenweise zu verarbeiten und nichts im Speicher zu behalten. Es scheint jedoch, dass einige Objektreferenzen von etwas festgehalten werden, sodass das Skript Speicherplatz verliert. Hier ist das vollständige Skript:

var fs = require('fs');
var readline = require('readline');
var mongoose = require('mongoose');

mongoose.connect('mongodb://buzzard/xtra');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));

var DeviceSchema = mongoose.Schema({
    _id: String,
    serial: String
});

var Device = mongoose.model('Device', DeviceSchema, 'devices');

function processLine(line) {
    var serial = line.split(',')[8];

    Device({
        _id: serial,
        serial: serial
    }).save(function (err) {
        if (err) return console.error(err);
    });
}

function processFile(baseDir, fileName) {
    if(!fileName.startsWith('qcx3'))
        return;

    var fullPath = `${baseDir}/${fileName}`;

    var lineReader = readline.createInterface({
      input: fs.createReadStream(fullPath)
    });

    lineReader.on('line', processLine);
}

function findFiles(rootDir) {
  fs.readdir(rootDir, function (error, files) {
    if (error) {
        console.log(`Error: ${error}` );
        return
    }

    files.forEach(function (file) {
        if(file.startsWith('.'))
            return;

        var fullPath = `${rootDir}/${file}`;

        fs.stat(fullPath, function(error, stat) {
            if (error) {
                console.log(`Error: ${error}` );
                return;
            }

            if(stat.isDirectory())
                dir(fullPath);
            else
                processFile(rootDir, file);
        });
    });
  })
}  


findFiles('c://temp/logs/compress');

Ich habe auch festgestellt, dass das Skript am Ende nicht beendet wird, wenn ich das Skript mit einem viel kleineren Testsatz ausführe, mit dem die Verarbeitung vollständig abgeschlossen werden kann. Bleibt einfach hängen, bis ich Strg + C drücke. Könnte das irgendwie zusammenhängen?

Was mache ich falsch