javascript - 删除 node.js 数组中对象的正确方法?

标签 javascript node.js garbage-collection

我已经编写了一个用于定期删除对象的函数。

function add(variable, expireSecond){
    this.list[variable] = {"expireSecond": expireSecond, "addTime": (new Date().getTime()) / 1000};
}

function deleteExpiredObject(){
    var currentTime = (new Date().getTime()) / 1000;
    for (var key in this.list) {
        var item = this.list[key];
        if (item.expireSecond + item.addTime < currentTime){
            delete this.list[key];
        }
    }
}

当我使用它时,我尝试执行以下操作:

add(xxx[1], 300);

但是当我调用deleteExpiredObject()时,似乎对象过期后内存没有释放。是因为xxx[1]中的对象非零引用吗?怎么解决?有没有我可以使用的图书馆?

谢谢!

最佳答案

这更像是一个 Javascript 问题,而不是直接与 node.js 相关的问题。 Javascript 中的删除用于从对象中删除属性。如果该属性引用了一个对象,则该对象不会被删除,但如果不再有对它的引用,则应在下一个垃圾收集周期中清理它。

这里还有一些与 Javascript 和 delete 关键字相关的问题,您可能会发现它们很有用:

`new` without `delete` on same variable in Javascript

When should I use delete vs setting elements to null in JavaScript? (关闭为欺骗,但有很好的答案)

Deleting Objects in JavaScript

关于javascript - 删除 node.js 数组中对象的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9849729/

相关文章:

javascript - 如何动态添加指令angularjs

javascript - 将数据发送到不同的域

node.js - mongodb使用更新来避免竞争条件,当字段为空数组时更新错误

node.js - 无法读取socket.io中未定义的属性 'on'

javascript - 如何在 while 循环中处理交替的异步函数?

php - 无需刷新即可更改网页上文本的最佳方法

javascript - 如何将视频流发送到 node.js 服务器

Java - 程序末尾的对象不是 "garbage collected"吗?

haskell - 让GHC做更多的GC?

python - 为什么python无法确定根并使用标记扫描?