правильный способ удалить объект в массиве для node.js? - PullRequest
2 голосов
/ 24 марта 2012

Я написал функцию для периодического удаления объекта.

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]? Как решить? Есть ли какая-нибудь библиотека, которую я могу использовать?

Спасибо!

1 Ответ

1 голос
/ 24 марта 2012

Это больше вопрос Javascript, чем непосредственно к node.js.Удалить в Javascript используется для удаления свойств из объекта.Если это свойство ссылается на объект, объект не удаляется, но если на него больше нет ссылок, его следует очистить в следующем цикле сборки мусора.

Вот еще несколько вопросов, связанных св Javascript и ключевое слово delete, которое может оказаться полезным:

`new` без` delete` для той же переменной в Javascript

Когда следует использовать deleteпротив установки элементов равными нулю в JavaScript? (Закрыт как дублирование, но имеет хорошие ответы)

Удаление объектов в JavaScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...