3

除了mark-and-sweep,.Net和Java的垃圾收集器也都运行压缩阶段来减少内存碎片。我无法在Flash 9垃圾收集器的压缩/碎片整理阶段找到任何文档 - Flash是否没有任何压缩阶段?Flash/ActionScript内存碎片

回答

2

嗯,我对内存管理问题已经有相当深入的了解,并且我已经和Adobe的工程师讨论过这个问题,我从来没有听说过任何碎片整理阶段。另一方面,他们似乎不太可能将它放弃,而且在GC之后,我确实已经看到我的整体内存使用量下降,按照您期望的方式进行碎片整理。总的来说,我会说有可能是这样的一个阶段。

但我确实感到相当自信的是,我不认为有任何官方的公开文件对此都有帮助。无论如何,我当然从未见过。如果有人知道,否则我会很高兴地取消,但以防万一你没有得到任何其他答案。

3

Adob​​e在Flash中使用的AS3虚拟机是开源的。

http://www.mozilla.org/projects/tamarin/

为虚拟机的内存管理器,称为MMgc,被包括在源代码。

MMgc提供了一个不动的收集器;一旦分配,对象不会被收集器移动。这意味着没有压缩阶段。

上MMgc其他文档可以在这里找到:

https://developer.mozilla.org/en/mmgc

一些更近期的工作正在记录的源代码库的文档目录中:

http://hg.mozilla.org/tamarin-redux/file/tip/doc/mmgc