【发布时间】:2011-10-02 20:18:41
【问题描述】:
昨天在玩游戏(Balloons Tower Defense 3)时,我注意到游戏随着时间的推移开始变慢,然后随机加速非常快。每次我认为是 GC 运行时,查看内存使用量下降。
作为一个合理的问题,是否有强制 Flash 从例如 Firefox 到 GC?也许您可以运行一个插件或命令来执行此操作?我知道你can do System.gc(),但这个游戏不是我的,所以我不能用“点击这里到 GC”按钮来修改源代码。
【问题讨论】:
-
不应该这样做。如果它很慢,这不会使它更快。更频繁地触发 GC 可能不会提高性能,它会浪费时间遍历整个堆,只收集一些未使用的项目。
-
@delnan 我所知道的是游戏会随着时间的推移变慢,然后随机加速。这种缓慢持续了几个级别,直到 GC 运行,然后它迅速加速。 GC 似乎真的很有帮助
-
我对此没有异议。但是你只能在另一个收集的开销超过它的好处之前频繁地收集它,而这个最佳点很可能是 GC 的默认行为已经存在的地方。想象一下极端情况,每次分配一个集合。它会尽可能降低内存使用率,但会花费 90% 的时间来运行 GC。
-
@delnan 我不会一直点击“运行 GC”,只是在它变慢的时候。最多每个级别一次(每个级别创建大量对象:气球+镜头)。
-
有趣的是,在“Bloon TD”的后期,他们拿游戏的速度开玩笑。 “不是游戏慢下来,而是你的思维加速了。”如果记忆对我有用,他们甚至将其与子弹时间进行比较。我不确定垃圾收集是否是这里的问题,而是游戏在屏幕上放置了太多对象。
标签: flash apache-flex actionscript-3 garbage-collection