wangduanduan / wangduanduan.github.io

Wubba Lubba dub-dub
https://wdd.js.org
27 stars 7 forks source link

nodejs垃圾回收测试 #305

Closed wangduanduan closed 5 years ago

wangduanduan commented 5 years ago

使用 delete

const nanoid = require('nanoid')
const asciichart = require ('asciichart')

let heap = {}
let times= 0
let size = 1000000
let count = []

function log () {
  const us = process.memoryUsage()
  let pt = (us.heapUsed / us.heapTotal) * 100
  pt = parseInt(pt)
  count.push(pt)
  console.log(times++, pt, us.heapUsed)

  if (times === 100) {
    console.log (asciichart.plot(count))
    process.exit()
  }
}

function add () {
  heap[nanoid()] = Buffer.alloc(size)
  someThing(heap[nanoid()])
}

function someThing (obj) {
  setTimeout(() => {
    let a  = typeof obj
  }, 1000)
}

function clean () {
  let keys = Object.keys(heap)

  if (keys.length > 1) {
    delete heap[keys]
  }
}

setInterval(add, 100)
setInterval(clean, 100)

setInterval(log, 1000)

Jietu20190517-164806