Flash 在web应用程序中,内存管理的职责在哪里?

Flash 在web应用程序中,内存管理的职责在哪里?,flash,internet-explorer,memory,browser,memory-leaks,Flash,Internet Explorer,Memory,Browser,Memory Leaks,我正在尝试调试一个客户端的一系列问题,该客户端似乎在web应用程序中面临内存泄漏问题。在记录了一个简单地反复导航web应用程序的宏脚本后,我们发现所有主要浏览器随着时间的推移消耗了越来越多的内存,这将导致flash和javascript等出现许多内存不足问题。Internet explorer是最大的罪魁祸首,需要在25分钟内提交近1.5 gb的内存。我们的web应用程序大量使用flash,根据我的研究,这也是一个大内存泄漏问题。说到这里,我的问题是什么主要负责内存管理?我知道浏览器负责在进程级

我正在尝试调试一个客户端的一系列问题,该客户端似乎在web应用程序中面临内存泄漏问题。在记录了一个简单地反复导航web应用程序的宏脚本后,我们发现所有主要浏览器随着时间的推移消耗了越来越多的内存,这将导致flash和javascript等出现许多内存不足问题。Internet explorer是最大的罪魁祸首,需要在25分钟内提交近1.5 gb的内存。我们的web应用程序大量使用flash,根据我的研究,这也是一个大内存泄漏问题。说到这里,我的问题是什么主要负责内存管理?我知道浏览器负责在进程级别释放和占用内存,但如果我们在持续使用中发现内存泄漏,我们应该关注什么来解决问题?

您需要澄清的事情很少。如果问题似乎与Flash有关,您是重新加载包含Flash小程序的整个页面,还是继续使用它

如果重新加载,问题可能出在JavaScript方面,在查看单个页面的会话中,对Flash对象的某些JavaScript引用会持续存在(这是罕见的,但并非不可能,在某种程度上,Skype被认为会导致可拨打电话号码的覆盖出现此类问题,这会弄乱外部接口包装中的某些内容,不仅会导致Skype自身,还会导致包含Flash的每一页永远留在浏览器的内存中)

如果你不重新加载Flash小程序,它应该自己管理自己的内存,浏览器、插件包装器、甚至播放器都不对它负责。然而,Flash使用类似于Java内存管理模型的方法,这意味着它在技术上无法分配在应用程序关闭后不会回收的内存这意味着,如果您确保重新加载Flash小程序,那么即使小程序本身正在泄漏,在卸载后,它使用的所有内存都应该回收

一般来说,AS3使用更高级的编程,而且与JavaScript相比,它有更多的功能,因此,我会开始搜索那里的问题(因为在更复杂的代码中犯错误的可能性更大).Flash有几个可用的内存探查器。Flash Builder中有一个,FlashDevelop也有一个,还有一个已知的未绑定到任何IDE: 还有一个项目叫做Monocle(以前是遥测),我不确定它是否发布了,但Adobe在上次MAX活动上演示了它,下面是Adobe的一位工程师在谈论它:(更多内容在演示的中间)

至于JavaScript,我不久前遇到了一些东西:来自Mozilla的建议。但是,我还记得需要从源代码构建Mozilla浏览器,以便启用内存分析(如果这样做,您需要设置一些与分析程序输出相关的变量)。以下是关于Chrome的类似信息:。也许,Visual Studio中有一些工具可以在IE中评测JavaScript-我不知道