【问题标题】:as3: does array splice delete an object completely?as3:数组拼接会完全删除一个对象吗?
【发布时间】:2011-10-09 06:55:01
【问题描述】:

我在一个数组中有很多显示对象,我不断地在舞台上添加和删除它们。删除后不再使用。

考虑到 displayObject 不在显示列表中,并且没有事件侦听器...如果我使用 splice 从数组中删除它会被垃圾回收吗?

如果我先将对象清空会更安全吗?

myArray[2] = null;
myArray.splice(2,1);

【问题讨论】:

    标签: actionscript-3 garbage-collection array-splice


    【解决方案1】:

    只要没有对DisplayObject 的剩余引用,那么可以,使用splice 将其从数组中删除,甚至只是将其设置为null 将允许它成为垃圾回收的候选对象。

    更新:在从数组中删除之前将项目设置为null 是多余的,不会有任何区别。

    【讨论】:

      【解决方案2】:

      如果您需要更好的性能,我建议您使用池而不是创建大量对象并将它们放入数组中。使用一些链表实现而不是 splice() 操作,这真的很慢。

      【讨论】:

      • 感谢您的想法。性能还可以,我只是担心,因为这个闪光灯会在博物馆里运行几个小时而不会重新启动。
      • 所以我建议您使用一些分析器来查看您是否没有内存泄漏(您的内存使用情况是否一直处于同一水平)。您可以轻松检查您的 swf 使用了多少内存。有很多开源分析器可以绘制内存使用图。
      猜你喜欢
      • 1970-01-01
      • 2023-01-23
      • 2023-01-13
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      相关资源
      最近更新 更多