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}`)
}