identify memory leak of closure with memwatch-node

My Node.js project suffering memory leaking, I've already set variables to null in closure, I mean, I know code like this:

var a = 0;
var b = 1;
var c = 0;
example_func(c, func(){
    console.log(b);
});

Will cause memory leaks, so I add some code to set these variables to null;

var a = 0;
var b = 1;
var c = 0;
example_func(c, func(){
    console.log(b);
    a = null;
    b = null;
    c = null;
});

But I still got leaks, so I try to use memwatch-node to figure out what's wrong with my code.

And the result shows that closure causing the leak, but not specified enough to target.

I've got the JSON like this

 { what: 'Closure',
   '+': 12521,
   size: '520.52 kb',
   '-': 5118,
   size_bytes: 533016 },

And I am wondering if I could get more specific details about which closure is leaking.

I've assigned name for all closures, but still not work.

You can't get more specific about which closure. memwatch gets a dump of the v8 heap and then takes differences of it and reports leaks if, after 5 successive garbage collection events, that object type count continued to grow.

Also, I believe you are confused on what closures are. The MDN page on closures gives a good description. A closure is not a variable, but a scope that enables functions to retain references and continue to work when used in a part of the code where those variable references would not otherwise be available.

If you pass functions around keep a reference to that function, it's closure could reference other closures. So, it's possible you have a single closure that could have a lot in it.

Do this: disable parts of your code until memwatch stops complaining. Then, look at that code. If you are still confused, post more details in this question.