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