Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80736 views
1
#!/usr/bin/env node --expose_gc
2
3
var weak = require('weak');
4
var test = require('tap').test
5
var LRU = require('../')
6
var l = new LRU({ max: 10 })
7
var refs = 0
8
function X() {
9
refs ++
10
weak(this, deref)
11
}
12
13
function deref() {
14
refs --
15
}
16
17
test('no leaks', function (t) {
18
// fill up the cache
19
for (var i = 0; i < 100; i++) {
20
l.set(i, new X);
21
// throw some gets in there, too.
22
if (i % 2 === 0)
23
l.get(i / 2)
24
}
25
26
gc()
27
28
var start = process.memoryUsage()
29
30
// capture the memory
31
var startRefs = refs
32
33
// do it again, but more
34
for (var i = 0; i < 10000; i++) {
35
l.set(i, new X);
36
// throw some gets in there, too.
37
if (i % 2 === 0)
38
l.get(i / 2)
39
}
40
41
gc()
42
43
var end = process.memoryUsage()
44
t.equal(refs, startRefs, 'no leaky refs')
45
46
console.error('start: %j\n' +
47
'end: %j', start, end);
48
t.pass();
49
t.end();
50
})
51
52