![]() |
1
1
将AMF与第三方产品结合使用,让我相信loader类试图实例化给定内容类型的新类(在本例中,它是一个位图类实例)。您可能正在从位图实例构造新的BitmapData对象。因此,我假设加载程序实例引用位图实例,在您的示例中,代码也引用位图实例。除非您在某个时刻调用bitmapdata.clone()。 还有几种方法可以强制GC。 Force Garbage Collection in AS3? 您可能会发现将一些任意大的对象附加到某个对象上很有用,然后强制GC查看该对象是否正在被清理或浮动。如果您使用的是类似procmon的Windows( http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx )比任务管理器更有助于进行这种外部检查。 当然,这是一个小小的尝试和错误,但缺少类似于VisualVM的东西。( https://visualvm.dev.java.net/ )我们在这个闪光的世界里有点搞砸了。 |
![]() |
2
1
这是一个很好的问题,但据我所知,答案是否定的——位图和位图数据对象都没有对加载它们的加载程序的引用,因此您可以安全地使用它们,而不必担心它们会阻止加载程序被收集。 但是,如果您想确定,请使用 clone() method of the BitmapData class :
例如:
在这里,img1的源代码是从加载程序返回的BitmapData对象显式转换的位图。(如果检查flexbuilder中的引用,就会发现它们是相同的。)但是img2的源是一个克隆——新的字节组、新对象、新引用。 希望这有助于解释事情。不过,负责阻止对象被垃圾收集的更可能的罪犯通常是事件处理程序。这就是为什么我设置 useWeakReference flag (见上文)当设置我的听众时,几乎是专门设置的,除非我有充分的理由不:
|
![]() |
3
0
您可以在完整的侦听器中设置一个存储位图的变量,然后在以后销毁该对象。
对我来说工作很好加载一些大图像,然后在TaskManager中看到不同之处 |