SQLite3 и mysql генерируют JavaScript кучи из памяти - PullRequest
1 голос
/ 24 марта 2020

Следующий код генерирует ошибку в течение 1 минуты:

FATAL ERROR: Неэффективные сжатые маркеры близки к пределу кучи. Выделение не удалось - JavaScript куча нехватки памяти.

Сборщик мусора не работает. Та же ошибка с MySQL. Почему? Как сделать миллион запросов с node js за один сеанс?

'use strict';

const sqlite3 = require('sqlite3').verbose();

var db = new sqlite3.Database('./any.db', sqlite3.OPEN_READWRITE, (err) => {
  if (err) {
    console.error(err.message);process.exit(1);
  }
  console.log('Connected to any database.');
});

var i=0;
var start = new Date()
var hrstart = process.hrtime()
var sql='SELECT balance FROM anytable WHERE address=1';

while (i>=0) {

  db.get(sql, (err, row) => {
         if (err) { throw err; process.exit(1); }
      });

  i++;
  if (i % 100000 == 0) {
     let end = new Date() - start, hrend = process.hrtime(hrstart);
     let speed = Math.trunc(i/end*100000);
     console.log("Speed: " + speed + "/s");
 //    if (global.gc) { global.gc(); console.log("Freeing memory"); }
  }
}
...