除了标记-清除算法之外,.Net和Java的垃圾收集器还运行压缩阶段以减少内存碎片化。我找不到任何关于Flash 9垃圾收集器的压缩/碎片整理阶段的文档 - Flash是否没有任何压缩阶段?
Adobe在Flash中使用的AS3虚拟机是开源的。
http://www.mozilla.org/projects/tamarin/
虚拟机的内存管理器称为MMgc,包含在该源代码中。
MMgc提供了一个非移动收集器;一旦分配,对象就不会被收集器移动。这意味着没有压缩阶段。
有关MMgc的更多文档可在此处找到:
https://developer.mozilla.org/en/mmgc
最近的一些工作正在源代码库的文档目录中进行记录:
嗯,我一直在深入研究内存管理问题,并与Adobe工程师讨论过,但我从未听说过碎片整理阶段。另一方面,他们似乎不可能不考虑这个问题,而且我确实在GC之后看到了我的整体内存使用量下降,如果有碎片整理阶段,这是你预期的情况。因此,总的来说,我认为可能存在这样的阶段。
但是,我相当自信的是,我不认为有任何官方的公共文档介绍它是否存在。无论如何,我从未看到过任何文件。如果有人知道其他情况,我会很乐意撤回这个说法,但以防万一您没有得到其他答案。