Blame view

node_modules/bfj-node4/src/memory.js 856 Bytes
aaac7fed   liuqimichale   add
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}`)
  }