Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

how to prevent memory leak in javascript

how to prevent memory leak in javascript

Problem

i stuck into Memory leak in js problems.

Javascript:

var index = 0;
function leak() {
    console.log(index);
    index++;
    setTimeout(leak, 0);
}
leak();

here is my test codes, and i use instruments.app to detect memory use of it, and the memory is going up very fast.

i am doubt that there seems no variables occupy the memory.

why?

any thought is appreciate.

Problem courtesy of: piggy_Yu

Solution

Your code creates a set of closures. This prevents the release of memory. In your example the memory will be released after the completion of all timeouts.

This can be seen (after 100 seconds):

var index = 0;
var timeout;
function leak() {
    index++;
    timeout = setTimeout(leak, 0);
}

leak();

setTimeout(function() {
        clearTimeout(timeout);
}, 100000);

setInterval(function() {
        console.log(process.memoryUsage());
}, 2000);
Solution courtesy of: Vadim Baryshev

Discussion

View additional discussion.



This post first appeared on Node.js Recipes, please read the originial post: here

Share the post

how to prevent memory leak in javascript

×

Subscribe to Node.js Recipes

Get updates delivered right to your inbox!

Thank you for your subscription

×