我已经编写了一个用于定期删除对象的函数。
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? (关闭为欺骗,但有很好的答案)
关于javascript - 删除 node.js 数组中对象的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9849729/