2012-03-24 5 views
2

私は前もってオブジェクトを削除する関数を書いています。node.jsの配列のオブジェクトを削除する正しい方法は?

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

私は 'this.list'を集めてオブジェクトですか?データ構造を持つアイテムを追跡してから、トラック保存構造だけを削除するように見えます。おそらく、このインターフェース 'set(name、value、expiryTime)、var value = get(name)'が必要です。 –

答えて

1

これはJavascriptに関する質問で、node.jsに直接関係するものではありません。 Javascriptでの削除は、オブジェクトからプロパティを削除するために使用されます。そのプロパティがオブジェクトを参照する場合、オブジェクトは削除されませんが、それ以上の参照がない場合は、次のガベージコレクションサイクルでクリーンアップする必要があります。

ここ

はJavascriptとあなたが役に立つかもしれ削除キーワードに関連するいくつかのより多くの質問です:

Deleting Objects in JavaScript

(デュープとしてクローズが、良い答えを持っている)

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

When should I use delete vs setting elements to null in JavaScript?

+0

あなたの答えに感謝します。私は自分のコードが動作すると信じていますが、nodejのプロセスがますます多くのRAMを占めているようです。そうする標準的な方法かどうかは疑問です。 –

関連する問題