首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FLVPlayback组件内存问题

FLVPlayback组件内存问题
EN

Stack Overflow用户
提问于 2008-08-22 20:44:55
回答 5查看 2.6K关注 0票数 1

我的网站完全是基于flash的,它围绕着一个3D模型移动,这个模型是作为视频块给我的,我已经将其转换为FLV文件。我正在使用FLVPlayback组件在我的程序中控制视频。在使用System.totalMemory运行内存检查时,我注意到每当加载视频时,它都会占用一大块内存,即使我删除了其中的所有事件侦听器(它们都是弱引用的),从其父组件中删除组件,停止视频并清空组件实例,它仍然不会归还这些内存。

自从我开始这个项目以来,这就一直困扰着我,因为用户可以潜在地实例化和加载大量的视频。目前,每当需要视频时,都会将其加载到新的FLVPlayback实例中,但我读到,解决此问题的最好方法可能是简单地拥有一个全局FLVPlayback实例,然后将新视频重新加载到旧实例中,这样应用程序的内存中将只有一个FLVPlayback组件。

其他人也遇到过这个问题吗?你有没有找到一个更好的解决方案,而不是使用一个全局实例,你只是在每个新视频重用?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-08-25 11:52:04

不幸的是,在Flash添加析构函数和显式对象删除之前,你对内存问题无能为力。请参阅此线程:

Unloading a ByteArray in Actionscript 3

Flash applet可以使用的内存是有限制的;GC似乎会在达到该限制时触发。我已经看到我的内存-简单的applet使用了大约200MB,仅仅是因为它们连续运行了几个小时,而GC不想介入。

哦,我也不认为使用单个实例是一个优雅的解决方案。目前,我只是为我的自定义类编写了一个dispose()函数,等待有一天它可以变成一个合适的析构函数。

票数 1
EN

Stack Overflow用户

发布于 2008-08-25 13:08:53

我从来没有真正喜欢过这些组件,它们有点不靠谱。这个特定的问题似乎很常见,正如您所建议的,有些恼人的解决方案是只有一个FLVPlayback并重用它。

Here's a blog post about it

票数 2
EN

Stack Overflow用户

发布于 2008-08-25 16:09:03

感谢你的回复,到其他博客问题的链接也很有帮助,我也读过了Grant Skinner关于垃圾收集的所有信息,但通过这些链接搜索并返回并重新阅读他最初关于GC的说法有助于刷新旧的noggin。除了清空和重新实例化单个FLVPlayback组件之外,我还意识到我也没有正确地卸载和销毁我的Loader实例,所以我清理了它们,现在程序的运行效率要高得多。我想说的是,网站的内存使用率提高了大约90%。

@aib我承认单实例解决方案并不优雅,但因为flash就是不放过那些FLV文件,所以我有点坚持使用它。

@grapefrukt我讨厌flash组件,它们通常会带来比节省时间更多的痛苦,但在这种情况下,我有很多关于视频文件的提示点和导航内容,而FLVPlayback组件是我找到的最好的解决方案。当然,我仍然是actionscript世界的新手,所以可能我忽略了一些东西

我也希望我能给你们的答案加分,因为它们都很有帮助……C‘’est la vie

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

https://stackoverflow.com/questions/23439

复制
相关文章

相似问题

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