#!/usr/bin/env node --expose_gc var weak = require('weak'); var test = require('tap').test var LRU = require('../') var l = new LRU({ max: 10 }) var refs = 0 function X() { refs ++ weak(this, deref) } function deref() { refs -- } test('no leaks', function (t) { // fill up the cache for (var i = 0; i < 100; i++) { l.set(i, new X); // throw some gets in there, too. if (i % 2 === 0) l.get(i / 2) } gc() var start = process.memoryUsage() // capture the memory var startRefs = refs // do it again, but more for (var i = 0; i < 10000; i++) { l.set(i, new X); // throw some gets in there, too. if (i % 2 === 0) l.get(i / 2) } gc() var end = process.memoryUsage() t.equal(refs, startRefs, 'no leaky refs') console.error('start: %j\n' + 'end: %j', start, end); t.pass(); t.end(); })