javascript - 在 Javascript 中,我应该在加载新实例后删除上一级别的实例吗?

标签 javascript oop memory memory-management memory-leaks

我制作了一个包含许多小关卡的 HTML5 游戏。当玩家到达门口时,会加载另一个关卡。当一个关卡正在加载时,它基本上只是将所有实例数组设置为 [],然后通过创建事物的新实例将内容插入其中,例如:

enemies = [] //this has previously been full of pointers from the old level
for (i = 0; i < n_enemies; i ++)
    enemies.push(new Enemy());

但是,我注意到仅仅设置一个充满指向 [] 的指针的数组并不会真正删除实例!那么,javascript 会自动执行此操作吗?还是我必须自己删除每个实例?

最佳答案

如果数组中的对象不再被任何地方引用,那么它们将被垃圾回收。没有说明何时会发生这种情况,但应该是在将它们从阵列中移除后不久。

这不应该出现内存泄漏。

关于javascript - 在 Javascript 中,我应该在加载新实例后删除上一级别的实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9567143/

相关文章:

javascript - 数据表中的类型错误

javascript - 通过 div 标签创建透明加载覆盖

c++ - 如何避免 protected 类成员?

java - 有效地散列目录中的所有文件(1000 个 2MB 文件)

javascript - 自动生成具有绝对位置的左侧和顶部 css

javascript - 清空并将html写入Div

objective-c - 如何让C数组始终直接从磁盘访问而不是保留在内存中?

c# - 如何在避免不必要的副本的同时从 List<T> 获取 Span<T>?

php - 使用 OOP 准备语句 - PHP MySql

c++ - 在基类中返回抽象类型