GS
Size: a a a
GS
A
const https = require('https');
const source = 'https://www1.nyc.gov/assets/planning/download/zip/data-maps/open-data/nyc_pluto_19v2_csv.zip';
const consoleMemory = () => {
const m = process.memoryUsage();
for (const key of Reflect.ownKeys(m)) {
m[key] = ~~(m[key] / 1024 / 1024);
}
console.log(m);
}
const getDataStream = () => {
return new Promise((resolve) => {
https.get(source, resolve);
});
}
const main = () => new Promise(async (resolve) => {
const dataStream = await getDataStream();
let c = 0;
dataStream.on('data', (data) => {
c++;
if (c % 1000) return;
consoleMemory();
});
dataStream.on('end', resolve);
});
(async () => {
consoleMemory();
await main();
await new Promise(res => setTimeout(res, 5000));
consoleMemory();
})();
{ rss: 30, heapTotal: 4, heapUsed: 2, external: 1 }
{ rss: 44, heapTotal: 4, heapUsed: 2, external: 1 }
{ rss: 47, heapTotal: 4, heapUsed: 2, external: 2 }
{ rss: 51, heapTotal: 4, heapUsed: 3, external: 15 }
{ rss: 57, heapTotal: 4, heapUsed: 2, external: 8 }
{ rss: 57, heapTotal: 4, heapUsed: 3, external: 11 }
{ rss: 50, heapTotal: 4, heapUsed: 2, external: 11 }
{ rss: 59, heapTotal: 5, heapUsed: 2, external: 2 }
{ rss: 58, heapTotal: 5, heapUsed: 3, external: 10 }
{ rss: 58, heapTotal: 5, heapUsed: 2, external: 8 }
{ rss: 58, heapTotal: 5, heapUsed: 2, external: 3 }
{ rss: 58, heapTotal: 5, heapUsed: 3, external: 15 }
A
GS
{ rss: 30, heapTotal: 4, heapUsed: 2, external: 1 }
{ rss: 44, heapTotal: 4, heapUsed: 2, external: 1 }
{ rss: 47, heapTotal: 4, heapUsed: 2, external: 2 }
{ rss: 51, heapTotal: 4, heapUsed: 3, external: 15 }
{ rss: 57, heapTotal: 4, heapUsed: 2, external: 8 }
{ rss: 57, heapTotal: 4, heapUsed: 3, external: 11 }
{ rss: 50, heapTotal: 4, heapUsed: 2, external: 11 }
{ rss: 59, heapTotal: 5, heapUsed: 2, external: 2 }
{ rss: 58, heapTotal: 5, heapUsed: 3, external: 10 }
{ rss: 58, heapTotal: 5, heapUsed: 2, external: 8 }
{ rss: 58, heapTotal: 5, heapUsed: 2, external: 3 }
{ rss: 58, heapTotal: 5, heapUsed: 3, external: 15 }
GS
Г
A
VD
GS
Г
A
GS
A
ВС
MD
AS
ВС
MI
GS
MI
dataStream.on('data', () => {
c++;
global.gc();
if (c % 1000) return;
consoleMemory();
});
node --expose-gc ./stream.js
{rss: 19, heapTotal: 4, heapUsed: 2, external: 1 }
{ rss: 27, heapTotal: 5, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 5, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 5, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 5, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 5, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 4, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 5, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 5, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 5, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 4, heapUsed: 2, external: 1 }
{ rss: 28, heapTotal: 5, heapUsed: 2, external: 1 }