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