【发布时间】:2025-12-30 14:00:06
【问题描述】:
我在 Flash 应用程序中的内存管理方面遇到了一些问题。内存使用量增长了很多,我已经追踪到我加载资源的方式。
我在一个嵌入式类中嵌入了几个光栅图像,像这样
[Embed(source="/home/gabriel/text_hard.jpg")]
public static var ASSET_text_hard_DOT_jpg : Class;
然后我以这种方式实例化资产
var pClass : Class = Embedded[sResource] as Class;
return new pClass() as Bitmap;
此时,内存使用量上升,这是完全正常的。但是,nulling 对对象的所有引用不会释放内存。
基于这种行为,看起来 Flash 播放器在我第一次请求它时正在创建该类的实例,但从未释放它 - 并非没有引用,调用 System.gc(),执行双重 LocalConnection 技巧,或在 BitmapData 对象上调用 dispose()。
当然,这是非常不可取的 - 内存使用量会增加,直到 SWF 中的所有内容都被实例化,无论我是否很久以前就停止使用某些资产。
我的分析正确吗?有什么办法可以解决这个问题吗?
【问题讨论】:
标签: apache-flex flash memory-management memory-leaks actionscript-3