libxmljs
Version:
libxml bindings for v8 javascript engine
31 lines • 1.02 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var libxml = require("../index");
if (!global.gc) {
throw new Error("must run with --expose_gc for memory management tests");
}
module.exports.detect_leaks = function (assert) {
collectGarbage(5);
if (libxml.nodeCount() > 0) {
console.log("tests leak " + libxml.nodeCount() + " nodes");
assert.ok(false);
}
assert.done();
};
function collectGarbage(minCycles, maxCycles) {
var _a;
minCycles = minCycles || 3;
maxCycles = maxCycles || 10;
var cycles = 0;
var freedRss = 0;
var usage = process.memoryUsage();
do {
(_a = global.gc) === null || _a === void 0 ? void 0 : _a.call(global);
var usageAfterGc = process.memoryUsage();
freedRss = usage.rss - usageAfterGc.rss;
usage = usageAfterGc;
cycles++;
} while (cycles < minCycles || (freedRss !== 0 && cycles < maxCycles));
return usage;
}
//# sourceMappingURL=z_memory_leak.js.map
;