我们都知道Web浏览器(例如Firefox)肯定会填满内存消耗,因为我们不断执行容易出现内存泄漏的JavaScript代码(来自网站).
我正在讨论开发一个桌面应用程序,并考虑到我使用Javascript/Css/HTML的经验,我想我会试试AIR,这样我就不必使用Java(例如)并处理学习它的所有GUI摇摆的东西.
问题是我担心AIR中的内存泄漏,因为AIR只是一个带有API层的Web浏览器,可以与操作系统进行交互.
担心AIR中的内存泄漏是否合理?我该怎么办呢?
我的名字是Rob Christensen,我是Adobe AIR的产品经理.首先,我要说的是,构建一个桌面应用程序非常容易,无论基础技术如何,它都消耗大量内存和/或不释放内存.
在AIR的下一个版本中,我们正在考虑为AIR运行时提供一些额外的功能,以便更轻松地识别基于JavaScript的应用程序的内存泄漏.构建基于Flash或Flex的应用程序的开发人员已经可以利用Flex Builder中包含的内存分析器来跟踪此情况.我们希望为JavaScript开发人员做类似的事情.
根据我与开发人员交谈的经验,当内存中的对象永远不会被清理时,通常会发生内存泄漏.例如,假设一个Twitter客户端根据搜索关键字列出来自用户的推文.加班,更多结果显示,列表变得更长.如果可见的推文最大数量没有限制,那么内存会随着时间的推移而增加.相反,应用程序应对该列表中显示的项目数量施加合理限制.
有一些讨论可以描述在AIR中处理内存的最佳实践.虽然本文中的示例主要是用ActionScript编写的,但同样的概念也适用于JavaScript.
性能调优AIR应用程序 http://www.adobe.com/devnet/air/articles/air_performance.html
如果运行时存在内存泄漏,我们会尽快跳过这些内存.我们鼓励开发人员使用以下反馈表(www.adobe.com/go/wish)将其发回给我们的团队,以了解此类问题.
如果您使用的是Ajax框架,则可能需要查看是否存在针对该特定框架的内存泄漏的已知问题.
总而言之,是的,在构建桌面应用程序时,无论是使用AIR还是C++,都应该始终担心内存.在开发应用程序时,您应该监视应用程序的内存使用情况,以便您可以尽早发现任何问题.一种方法是运行长寿测试 - 让你的应用程序打开一夜,看看内存是否正在爬升.
通常,浏览器可用的工具也非常有限.我预计这会很快改变,因为浏览器供应商也开始在他们的浏览器中提供更多钩子以识别内存使用情况.希望这可以帮助.
谢谢!
-抢
Adobe AIR产品经理