【问题标题】:How to delete objects created with `new` in JavaScript?如何在 JavaScript 中删除用`new`创建的对象?
【发布时间】:2014-10-19 17:03:31
【问题描述】:

我是 JavaScript 新手,来自 C++ 背景。这听起来很傻,但我找不到如何在 JavaScript 中删除使用new 创建的对象。

这是一个例子:

function Article (id) {
    this.content = db.get('article', "id:" + id);
    ...
}

var article = new Article(5);

文章的每个实例在从数据库获取数据时都会分配内存(在我的例子中是文章的内容)。这导致我的应用程序的内存使用量迅速增长到千兆字节。

如何在 JavaScript 中释放内存?我找到了delete,但它似乎删除了数组和哈希元素而不是对象。

【问题讨论】:

  • @pnuts 我会回去看看为什么我没有接受答案。有时答案不够好,所以我离开了。有时我也忘记接受。谢谢。
  • @pnuts 哇,谢谢。没想到这会阻止人们提供帮助......
  • @pnuts 忘了问有什么问题你帮我解决但我没有接受吗?

标签: javascript object memory-management new-operator delete-operator


【解决方案1】:

只要删除对象的所有引用,它就会被垃圾回收(当 JS 引擎做一些垃圾回收时)。

article = undefined; // or some other value

【讨论】:

  • 不保证会发生一个GC循环。
  • 我想我会接受这个答案...我认为没有办法强制删除对象。唯一的方法是取消定义它并让 GC。
【解决方案2】:

它会在未来某个时候通过垃圾收集自动发生,或者永远不会发生。它是非确定性的,与 C++ 中的 RAII 不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2013-07-03
    相关资源
    最近更新 更多