在属性上使用delete时的Javascript对象内存管理

前端之家收集整理的这篇文章主要介绍了在属性上使用delete时的Javascript对象内存管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在编写node.js / socket.io应用程序,但问题是 javascript的一般问题.

我有一个关联数组,为每个客户端连接存储一种颜色.考虑以下:

var clientColors = new Array();

//This execute each new connection
socket.on('connection',function(client){   
clientColors[client.sessionId] = "red";

    //This execute each time a client disconnect
    client.on('disconnect',function () {
        delete clientColors[client.sessionId];
    });
});

如果我使用delete语句,我担心它会导致内存泄漏,因为不会删除以client.sessionId值(关联数组为对象)命名的属性,它对其值的引用将是gonne但属性仍然是存在于对象中.

我对吗?

解决方法

delete clientColors [client.sessionId];

这将删除对象clientColors上对象的引用. v8垃圾收集器将拾取任何对零垃圾收集引用的对象.

现在,如果您询问这是否在IE4中创建了内存泄漏,那么这是一个不同的问题.另一方面,v8可以轻松处理这个问题.

看到你删除了唯一的引用,该属性也将消失.另请注意,javascript中的对象不是“关联数组”,因为排序是特定于实现的,而不是由ES规范保证.

原文链接:https://www.f2er.com/js/155264.html

猜你在找的JavaScript相关文章