首页 > 解决方案 > 您是否需要在 Node.js 函数的末尾取消变量以避免内存泄漏?

问题描述

所以我试图在我部署到 Heroku 的应用程序中找到内存泄漏。我在大多数(如果不是全部)功能中都使用快递请求,所以我认为我在这里遗漏了一些基本问题。查看此链接的“关闭”部分(https://betterprogramming.pub/the-4-types-of-memory-leaks-in-node-js-and-how-to-avoid-them-with-the -help-of-clinic-js-part-1-3f0c0afda268),似乎您必须使变量无效才能释放它们占用的内存。这是我的功能:

async function HelperFunction() {
  const client = await pool.connect()
  return new Promise( async (resolve, reject) => {
    let var0 = []
    let currentDate = new Date()
    let date = ("0" + currentDate.getDate()).slice(-2);
    let month = ("0" + (currentDate.getMonth() + 1)).slice(-2);
    let year = currentDate.getFullYear();
    let currentTimestamp = year + "-" + month + "-" + date + " " + hours + ":" + minutes + ":" + seconds
    try {
      await client.query('BEGIN')
      const res = await client.query(querySQLFunction, [currentTimestamp]);
      for (row of res.rows) {
          let jsonObject = {
            var1: row.var1,
            var2 : row.var2,
            var3 : Number(row.var3),
            var4 : Number(row.var4),
            var5 : 0
          }
          var0.push(jsonObject)
        }
      await client.query('COMMIT')
    } catch(err) {
      await client.query('ROLLBACK')
      console.log(err)
    } finally {
      client.release()
      resolve(var0)
    }
  })
}

例如,在上面的函数中,我是否必须在“finally”块中将所有让设置为空?另外,如果我在其他函数中定义函数:

async function otherFunction() {
    const foo = async (page) => {
        //await query some stuff
    }
    //nullification of foo here?
}

我必须在函数结束之前将 const 设置为 null 吗?

标签: javascriptnode.jspostgresqlherokumemory-leaks

解决方案


推荐阅读