3

除了标记和清除之外,.Net 和 Java 的垃圾收集器还运行压缩阶段以减少内存碎片。我找不到有关 Flash 9 垃圾收集器的压缩/碎片整理阶段的任何文档 - Flash 没有任何压缩阶段吗?

4

2 回答 2

3

Adobe 在 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

于 2011-02-16T03:58:53.137 回答
2

好吧,我已经对内存管理问题进行了相当深入的研究,并且我已经与 Adob​​e 工程师讨论过它,但我从未听说过任何关于碎片整理阶段的消息。另一方面,他们似乎不太可能将其排除在外,而且我当然已经看到我的整体内存使用量在 GC 之后下降,就像你在碎片整理阶段所期望的那样。所以总的来说,我会说可能有这样一个阶段。

但我确实感到相当有信心的是,我认为无论哪种方式都没有任何官方的公共文档。无论如何,我当然从未见过。如果有人知道否则我会很乐意撤销,但以防万一你没有得到任何其他答案。

于 2009-06-12T08:03:32.850 回答