我想制作可以在支持flash的浏览器上运行的应用程序,并决定flex对我来说是最好的,所以我开始学习。AFAIK flex有一个GC,但与我见过的其他语言中的GC相比,GC的工作原理可能有些不同。我发现了this,但显然存在(或曾经)无法防止的巨大内存泄漏,而且在IE中运行时会更糟。
flex现在是值得信任的了。有没有什么漏洞被修复了?
发布于 2008-11-17 16:40:03
我在一个相当大和复杂的Flex3应用程序上工作,我们没有遇到任何可怕的或无法控制的内存泄漏-即使在IE中也是如此。
Grant Skinner写的这篇关于AS3中垃圾回收的文章对我很有帮助。它是在2006年发布的,但它仍然是完全相关的(因为我们仍然使用AS3)。这是他关于资源管理的三部分系列的一部分-在他的帖子中有相关文章的链接。
http://www.gskinner.com/blog/archives/2006/06/as3_resource_ma.html
需要理解/记住的是,Flex应用程序在Flash播放器中运行--也许你很清楚这一点,但如果你没有Flash开发背景,我认为这一点并不是很明显。至少,我不认为这是为我准备的。:)
发布于 2008-11-21 23:10:47
有一篇Adobe DevNet的文章描述了Flash Player的垃圾收集:
http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html
在ActionScript中编程时,与内存相关的最大问题是确保不再保留对不再需要的对象的引用。例如,在添加事件侦听器时,请确保在不再需要该事件侦听器时也将其移除(或者学习如何利用弱引用)。
根据我的经验,Flex框架通常擅长这种类型的内存记账。应用程序的内存占用将在一定程度上取决于您在编写代码时考虑到的垃圾收集器的好坏。
如果您确实遇到内存不断增加的问题,您可以利用Profiler获取并比较内存快照,以便找到泄漏的对象。您可以在此处找到有关Profiler的信息:
http://livedocs.adobe.com/flex/3/html/profiler_1.html
发布于 2008-11-16 07:10:08
您可以查看的两个资源是:Flex Bug Tracking,您可以仔细阅读它来查找已修复/记录的内存泄漏错误。此外,在Flex Builder IDE中,您可以使用Profiler来监控内存/CPU使用情况等。我无法具体回答您的问题。我认为这里的部分责任在于您,开发人员,以及您如何设计和管理您的代码。除此之外,我注意到使用Flex3框架(或者一般的ASVM2 ),它在为我管理GC方面做得很好。还请记住,Flex4即将问世。
https://stackoverflow.com/questions/293587
复制相似问题