实际上我自己找到了解决方案,但是当我搜索 Adobe 论坛和之前在这里发现问题反复出现但从未解决时,我想我会在这里回答我自己的问题,以便将来谷歌搜索某人。
但无论如何,它在无数种情况下都会泄漏,并且从之前的评论者看来。在我的情况下,它在另一个 SWFLoader 中的 SWFLoader 中,并且当父 SWFLoader 消失时,视频会保留在内存中,并且 removeEventListeners 或 gc.collect 或您在 RemovedFromStage 处理程序中的任何组合都不会解决问题。您可以在那里停止视频,因此它不会继续播放,但它仍然保留在内存中,并且每次运行时都会添加另外 10Mb 左右。
顺便说一句,我只是对 Adobe 怎么能让这样的事情像他们一样不停地保持不变感到困惑。显然有一些事件监听器埋在他们自己的代码中的某个地方,这些代码从未发布过,但显然他们可能不在乎。我假设这种事情至少是闪存越来越被边缘化的原因之一。对我来说,似乎也没有意识到这个问题的 Flash 开发人员的数量也很奇怪,他们认为这不是问题,直到实际上所有的系统内存都被消耗并且浏览器崩溃了。好吧,我自己来自传统的应用程序开发,在任务管理器中看到每次用户点击按钮时内存不断增加并且从未释放是不可接受的。
所以最初我开始寻找 3rd 方 flex 视频播放器并立即遇到了 开源媒体框架。在他们的包中,他们实际上有许多不同的方法和类,可以通过这些方法和类来调用视频。我尝试了其中的几个(MediaPlayerSprite、MediaContainer、VideoElement、LightweightVideoElement 等),但所有这些都泄露了,并且与 Flex 的 VideoDisplay 一样!显然,Flex VideoDisplay 在我认为(也许)背后使用了 OSMF 代码。因此,无论如何,另一家不关心泄漏的公司 - 令人难以置信,莫名其妙。