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