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