| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 | | 'use strict' |  |   |  | const PROPERTIES = [ 'rss', 'heapTotal', 'heapUsed', 'external' ] |  |   |  | let memory |  |   |  | module.exports = { |  |   initialise, |  |   update, |  |   report |  | } |  |   |  | function initialise () { |  |   memory = PROPERTIES.reduce((result, name) => { |  |     result[name] = { |  |       sum: 0, |  |       hwm: 0 |  |     } |  |     return result |  |   }, { count: 0 }) |  | } |  |   |  | function update () { |  |   const currentMemory = process.memoryUsage() |  |   PROPERTIES.forEach(name => updateProperty(name, currentMemory)) |  | } |  |   |  | function updateProperty (name, currentMemory) { |  |   const m = memory[name] |  |   const c = currentMemory[name] |  |   m.sum += c |  |   if (c > m.hwm) { |  |     m.hwm = c |  |   } |  | } |  |   |  | function report () { |  |   PROPERTIES.forEach(name => reportProperty(name)) |  | } |  |   |  | function reportProperty (name) { |  |   const m = memory[name] |  |   // eslint-disable-next-line no-console |  |   console.log(`mean ${name}: ${m.sum / memory.count}; hwm: ${m.hwm}`) |  | } | 
 |