2012-03-24 50 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)'。 – 2012-03-24 13:52:30

回答

1

這是一個Javascript問題,而不是直接關聯到node.js.在Javascript中刪除用於從對象中刪除屬性。如果該屬性引用了一個對象,則該對象不會被刪除,但如果沒有更多引用,則應在下一個垃圾回收循環中清除該對象。

以下是有關JavaScript中的一些問題和刪除關鍵字,你可能會發現有用:

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

When should I use delete vs setting elements to null in JavaScript?(封閉,重複數據刪除,但有很好的答案)

Deleting Objects in JavaScript

+0

感謝您的回答。我相信我的代碼有效,但是看起來nodejs的進程佔用了越來越多的內存,所以我懷疑這是否是標準方式。 – 2012-03-24 15:50:02

相關問題