liusuyi
2023-04-24 4737f1e038743ced243c9e52423404d9034d6107
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}`)
}