Flash Player 11 新增了这个跟垃圾回收紧密相关的API:pauseForGCIfCollectionImminent() 方法。Adobe推出中文的语言参考了:
如果垃圾回收器的临界值超过函数的临界参数,则建议回收器应完成增量回收循环。
在标记使用的内存时,Flash 运行时垃圾回收器算法将增量运行。当回收内存的未使用部分时,该算法将暂停应用程序的执行。在增量回收循环完成时发生的暂停可能比需要的时间长,并在某些程序中可以观察到或听到。应用程序可以使用此函数建议运行时完成标记并执行回收的理想时间。将潜在的暂停时间长度安排为不会引起用户注意的时间长度,这样可以提供更好的用户体验。例如,游戏在完成某个级别时可能会调用此函数,从而减少在游戏进行过程中发生暂停的次数。
临界值定义为距离回收器设定标记还有多远,即距离触发回收暂停还有多远。此函数的临界值参数是一个阈值:仅当实际临界值超出阈值时才调用垃圾回收器。否则,此调用将立即返回,不采取任何操作。
通过使用较低的临界值调用此函数,应用程序表示其愿意接受必须完成相对大量的标记。另一方面,较高的临界值表示仅当标记几乎完成时才应暂停应用程序。通常,前一种情况下的暂停时间比后一种情况下的暂停时间要长。
所释放的内存量不取决于临界参数。其仅取决于可释放对象的数量。如果应用程序最近释放了对较大数据结构或大量对象的引用,则较低的临界参数将容易触发一个将立即释放这些对象的集合。
参数 imminence:Number (default = 0.75) — 一个介于 0 和 1 之间的数字,其中 0 表示不紧急,1 表示最紧急。小于 0 的值默认为 0.25。大于 1.0 的值默认为 1.0。NaN 默认为 0.75