On 22/11/13 21:14, Timothy J Fontaine wrote:
>
> so you're creating a bunch of stat watchers, those require gc to be
> cleaned up, but they're still too young by the time you run gc outside
> the loop, if instead you move the gc into the loop or call it multiple
> times after the loop is done it can effectively clean them up.
>
>

Ok - I tried that and moved the gc() call to the end of the loop and for
good measure added a couple outside the loop before outputting the
memory usage.   I had to reduce the number of loops to 10,000 so that it
didn't take forever to complete; but it still shows a leak:

[root@mta41 ~]# node --expose_gc watchfile_leak.js
{ rss: 8478720, heapTotal: 6163968, heapUsed: 1919048 }
{ rss: 17838080, heapTotal: 20844032, heapUsed: 1928208 }


I also switched from fs.watchFile to fs.watch and I see a leak with that
too:

[root@mta41 ~]# node --expose_gc watchfile_leak.js
{ rss: 8478720, heapTotal: 6163968, heapUsed: 1918824 }
{ rss: 18067456, heapTotal: 18647040, heapUsed: 8692304 }

Code for this:

var fs = require('fs');
gc();
console.log(process.memoryUsage());
var name = '/etc/passwd';
for (var i=0; i<10000; i++) {
    var foo = fs.watch(name, function () {});
    foo.close();
    gc();
}
gc();
console.log(process.memoryUsage());

This is on Linux 2.6.18 x86_64 running Node 0.10.22.

Kind regards,
Steve.

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to