Skip to content

Instantly share code, notes, and snippets.

@peernohell
Last active April 10, 2018 13:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peernohell/9d42ad5b8de45f2d1ac9ebb3971e2ea0 to your computer and use it in GitHub Desktop.
Save peernohell/9d42ad5b8de45f2d1ac9ebb3971e2ea0 to your computer and use it in GitHub Desktop.
const { fabric } = require('fabric');
const fs = require('fs');
// OK
let loop1 = 100;
let loop2 = 0;
// Leak
loop1 = 1;
loop2 = 100;
// leak and goes up to 700Mo RSS and 600Mo for external.
// loop2 = 600;
const m = () => ([process.memoryUsage().rss / 1000000 | 0, process.memoryUsage().heapTotal / 1000000 | 0, process.memoryUsage().heapUsed / 1000000 | 0, process.memoryUsage().external / 1000000 | 0]);
const image = (i = 0) => {
const canvas = new fabric.StaticCanvas();
canvas.setWidth(600);
canvas.setHeight(400);
const obj = {
version: '2.0.0-rc.3',
objects: [{
type: 'image',
version: '2.0.0-rc.3',
src: `https://imgflip.com/s/meme/Leonardo-Dicaprio-Cheers.jpg`,
}],
};
canvas.loadFromJSON(obj, () => {
// convert tags
canvas.getObjects().forEach(o => {
if (o.type === 'image') {
let newSrc = 'https://lh5.googleusercontent.com/-uU9156CO9Y8/AAAAAAAAAAI/AAAAAAAARzE/gXfT-SXMzxs/photo.jpg';
// newSrc = `${o.src}?r=${Random.id()}`;
const oldWidth = o.width;
for (let i = 0; i < loop2; i++) {
o.setSrc(newSrc);
}
}
});
// canvas.renderAll();
canvas.toDataURL({ format: 'png' });
canvas.clear();
canvas.dispose();
canvas.contextContainer = null;
// global.gc();
console.log(`IMG${i}`, m());
});
};
console.log('START ', m());
for (let i = 0; i < loop1; i++) {
image(i);
}
console.log('END ', m());
setInterval(() => {
global.gc();
console.log('RSS ', m());
}, 1000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment