Skip to content

Instantly share code, notes, and snippets.

@peernohell
Last active March 21, 2018 17:54
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/db5513b45e015a5ed7f2b4b860211413 to your computer and use it in GitHub Desktop.
Save peernohell/db5513b45e015a5ed7f2b4b860211413 to your computer and use it in GitHub Desktop.
leak in fabric when a big canvas with one little image.
const { fabric } = require('fabric');
// const m = () => process.memoryUsage();
const m = () => (process.memoryUsage().rss / 1000000 | 0);
console.log('START ', m());
for (let i = 0; i < 3; i++) {
const canvas = new fabric.StaticCanvas();
canvas.setWidth(10000);
canvas.setHeight(10000);
let obj = {
type: 'image',
version: '2.0.0-rc.3',
originX: 'left',
originY: 'top',
left: 0,
top: 0,
width: 1,
height: 1,
fill: 'rgb(0,0,0)',
stroke: null,
strokeWidth: 0,
strokeDashArray: null,
strokeLineCap: 'butt',
strokeLineJoin: 'miter',
strokeMiterLimit: 10,
scaleX: 1,
scaleY: 1,
angle: 0,
flipX: false,
flipY: false,
opacity: 1,
shadow: null,
visible: true,
clipTo: null,
backgroundColor: '',
fillRule: 'nonzero',
paintFirst: 'fill',
globalCompositeOperation: 'source-over',
transformMatrix: null,
skewX: 0,
skewY: 0,
crossOrigin: '',
cropX: 0,
cropY: 0,
src: 'https://imgflip.com/s/meme/Leonardo-Dicaprio-Cheers.jpg',
filters: [],
selectable: true
};
// UNCOMENT NO LEAK
// obj = {};
canvas.loadFromJSON({ version: '2.0.0-rc.3',
objects:
[ obj,
] }, () => {
const dataUrl = canvas.toDataURL({ format: 'png' });
canvas.dispose();
global.gc();
console.log('IMG' + i + ' ', m());
});
}
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