test: fix pummel/test-net-connect-memleak

* Run the garbage collector before creating the big array. It doesn't
  matter now but if in the future something in node.js core creates
  a lot of reclaimable garbage, that will break the test's expectation.

* The first RSS check was being done too late. The garbage collector
  might have run before the check, throwing off the 'reclaimed memory'
  calculation.

* Due to changes in how V8 represents the big array internally, the
  actual memory usage is just below 256 MB on x64. Update the test's
  expectation.
This commit is contained in:
Ben Noordhuis committed 2013-08-01 16:07:46 +02:00
1 parent fc6f8a6943
commit 98db7babcc
1 file changed
+4 -2
+4 -2
View File
@@ -28,9 +28,12 @@ var net = require('net');
assert(typeof gc === 'function', 'Run this test with --expose-gc');
net.createServer(function() {}).listen(common.PORT);
var before = 0;
(function() {
// 2**26 == 64M entries
gc();
for (var i = 0, junk = [0]; i < 26; ++i) junk = junk.concat(junk);
before = process.memoryUsage().rss;
net.createConnection(common.PORT, '127.0.0.1', function() {
assert(junk.length != 0); // keep reference alive
@@ -40,11 +43,10 @@ net.createServer(function() {}).listen(common.PORT);
})();
function done() {
var before = process.memoryUsage().rss;
gc();
var after = process.memoryUsage().rss;
var reclaimed = (before - after) / 1024;
console.log('%d kB reclaimed', reclaimed);
assert(reclaimed > 256 * 1024); // it's more like 512M on x64
assert(reclaimed > 128 * 1024); // It's around 256 MB on x64.
process.exit();
}