首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3 -已卸载的AVM1 swfs跟踪为已卸载,但未为AVM2计算机释放内存

AS3 -已卸载的AVM1 swfs跟踪为已卸载,但未为AVM2计算机释放内存
EN

Stack Overflow用户
提问于 2010-03-30 03:03:00
回答 2查看 1.1K关注 0票数 1

我有一个用as3构建的大型项目。它的部分主要功能是加载和卸载各种as2 swfs。问题是,一旦卸载,内存就不能释放。

我有权访问as2 swfs代码库,并销毁所有对象,停止和杀死计时器,侦听器,从舞台上删除,销毁所有创建的MovieClip.protoypes。它们看起来是干净的,因为在运行销毁函数后,AS2调试器没有显示对象的残留物。在AS3中,我关闭了本地连接,清除了对AVM1Movie的所有引用/侦听器,并运行了Loader.unloadAndStop()。as2中的跟踪显示swf已卸载,但查看windows任务管理器,内存使用量从未下降到加载flex swf之前的水平。每个as2 swf在每次运行时都会占用高达80兆的内存,因此加载和卸载几个as2文件的速度会很快。

在这一点上,如果AS2SWF被卸载,我可以假设唯一剩下的就是MovieClip.prototype和/或_global,_root变量是在AS2运行时添加的。但我已经检查过了,找不到任何其他可能会卡住的东西。以前有没有人见过AVM1机器没有释放内存的问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-10 08:15:58

我认为你应该读一下格兰特·斯金纳写的这些文章:

http://gskinner.com/blog/archives/2006/06/as3_resource_ma.html

http://gskinner.com/blog/archives/2006/07/as3_resource_ma_1.html

http://gskinner.com/blog/archives/2006/08/as3_resource_ma_2.html

在第二个版本中,Issue 2: Loaded 一节真正指出了您的问题。

票数 0
EN

Stack Overflow用户

发布于 2010-03-30 11:46:09

唯一的问题是内存使用率没有下降,还是确定内存没有被释放?我更熟悉内存匮乏的移动内容,但一般来说,在Flash从操作系统请求内存后,它不一定会返回内存,因为它不再被使用。

相反,我的经验是,你加载内容,你的内存使用量会激增,然后你卸载它,使用率保持不变。然后你加载了更多的内容,如果你的使用量保持不变,你就知道你之前正确地释放了东西,Flash正在重用释放的内存来存储你的新内容。这是您通常需要进行测试的方式,而不是等待内存使用量减少。(虽然总内存有时会减少,但确切的发生时间可能最好不用担心。)

此外,您可能会发现,使用System.totalMemory跟踪内存使用情况比跟踪windows任务管理器中显示的内存使用情况更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2540518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档