【发布时间】:2012-02-25 03:16:14
【问题描述】:
对于游戏(使用 AIR for iOS),我想阻止 GC 在特定的 30 秒序列内运行(因为它会导致非常明显的延迟)。
我已经做的是在序列开始之前调用 System.gc() 。在序列中,我没有创建很多新对象,只有一些动画播放和对象移动(在 3D 中)。一些物体移出舞台。
此序列期间的内存统计数据大致如下:
System.totalMemory: 4.5 MB
System.freeMemory: 1.0 MB
System.privateMemory: 75 MB
当 GC 触发时,System.privateMemory 会下降到 74 MB,但会导致大约一秒的延迟。在这 30 秒的序列中,GC 会触发两次。
所以我的问题是关于防止 GC 在这 30 秒内触发的任何技术、黑客或解决方法(除了一般优化内存使用 - 显然我已经在努力)?
谢谢。
【问题讨论】:
-
你有很多对象吗?
-
嗯 - 很多 - 我会说几百个 - 但我不会在这个序列中创建大量新的(我可能会添加 50 个显示对象并在这 30 秒内再次删除它们)
-
在序列之前创建对象是否会有所帮助,保持它们不可见并只是玩可见性而不用对象创建/删除来警告 GC...
标签: actionscript-3 air garbage-collection