CNode

请教一下nodejs对象释放的问题

问答
Rryanking8215发布于12 年前最后回复12 年前6 回复15450 浏览0 收藏
 "use strict"

var util = require("util")

var Notifier = function() {
    var self = this
    setInterval(function(){
        console.log("emit")
    },1000)
}

var test = {}

test.n = new Notifier()

setTimeout(function(){
    console.log("quit")
    delete test.n
},5000)

按照我理解,5s后test.n对象被释放,也不会一直输出"emit",但是实际不是的,特此请教

查看回复

回复 (6)

W
willwen#1·12 年前

IntervalTimer不存在於那個對象裡。釋放這個對象,不會對timer有影響。

L
lujb#2·12 年前

delete test.n只是从test的scope中移除对前面那个interval的引用n。真正的interval还存在内存当中。interval对象是这样销毁的:

var ref = setInterval();
clearInterval(ref);
T
tolerious#3·12 年前

在内存中该对象并未销毁~

F
fish#4·12 年前

delete test.n 只是销毁了n属性链接, 并没有销毁 Notifier 实例, setInterval 持有了这个实例的引用

G
gvforjob#5·12 年前
引用 fishdelete test.n 只是销毁了n属性链接, 并没有销毁 Notifier 实例, setInterval 持有了这个实例的引用

@fish 那么是不是只要 setInterval ,只要我们不手动 clearInterval ,这个 Interval 实例永远不会被自动回收?

参与回复
登录后即可参与回复。登录