看看下面这段代码中内存泄露的原因是什么?
发布于 10 年前 作者 sailxjx 3910 次浏览 最后一次编辑是 8 年前
express = require('express')
http = require('http')
redis = require('redis').createClient()
async = require('async')
port = 3000

app = express()

server = http.createServer(app)

class Cache

  data = {}

  constructor: ->
    [@data](/user/data) = {}

  get: (callback) ->
    redis.get '1mb', (err, content) =>  # 每次从redis取出1mb数据
      [@data](/user/data)[Math.random()] = content
      callback(null, content)

foo = ->
  for i in [0..1000]
    cache = new Cache
    cache.get (err, content) ->

foo()  # 这个循环中的内存无法回收

app.get '/', (req, res) ->  # 但是通过外部程序curl 1000次这个server,内存是可以得到回收的
  cache = new Cache
  cache.get (err, content) ->
    res.send(content)

server.listen(port)
console.log "server listen on #{port}"
1 回复

这语法糖读起来好费劲.

我无法人肉讲这个所谓代码解析成js.

回到顶部