Javascript AdobeAIR,内存泄漏

Javascript AdobeAIR,内存泄漏,javascript,memory-leaks,air,adobe,Javascript,Memory Leaks,Air,Adobe,我们都知道web浏览器(如Firefox)肯定会填满内存消耗,因为我们不断执行JavaScript代码(来自网站),这很容易导致内存泄漏 我正在讨论开发一个桌面应用程序,考虑到我使用Javascript/Css/HTML的经验,我想我应该尝试一下AIR,这样我就不必使用Java(例如)和学习它的所有GUI swing内容 问题是我担心内存泄漏,因为AIR只是一个带有API层的web浏览器,可以与操作系统交互 担心内存泄漏是否合理?我该怎么办呢?当然可以。我见过Linux上的AIR应用程序随着时间

我们都知道web浏览器(如Firefox)肯定会填满内存消耗,因为我们不断执行JavaScript代码(来自网站),这很容易导致内存泄漏

我正在讨论开发一个桌面应用程序,考虑到我使用Javascript/Css/HTML的经验,我想我应该尝试一下AIR,这样我就不必使用Java(例如)和学习它的所有GUI swing内容

问题是我担心内存泄漏,因为AIR只是一个带有API层的web浏览器,可以与操作系统交互


担心内存泄漏是否合理?我该怎么办呢?

当然可以。我见过Linux上的AIR应用程序随着时间的推移吞噬了千兆字节的内存。它对我来说是一个真正的拦截器,阻止我使用它们

也就是说,其他平台上的其他人对此没有异议。最终,你需要决定你的大部分市场将使用什么,以及空气中的任何问题(或其他问题)将如何影响他们


如果没有那么重要(但这仍然是一个问题),请提交错误报告,并希望Adobe能够解决问题。

我的名字是Rob Christensen,我是Adobe AIR的产品经理。首先,我要说的是,无论底层技术如何,构建一个消耗大量内存和/或不释放内存的桌面应用程序都非常容易

在AIR的下一个版本中,我们将考虑为AIR运行时提供一些额外的功能,以便更容易地识别基于JavaScript的应用程序的内存泄漏。正在构建Flash或基于Flex的应用程序的开发人员已经可以利用Flex Builder中包含的内存探查器来跟踪这一点。我们也希望为JavaScript开发人员做类似的事情

根据我与开发人员交谈的经验,当内存中的对象从未清理干净时,内存泄漏经常发生。例如,想象一个Twitter客户端根据搜索关键字列出用户的推文。随着时间的推移,显示的结果越多,列表就越长。如果对可见推文的最大数量没有限制,内存当然会随着时间的推移而增加。相反,应用程序应该对该列表中出现的项目数量施加合理限制

有一些讲座介绍了在空气中处理内存的最佳实践。尽管本文中的示例大多是用ActionScript编写的,但同样的概念也适用于JavaScript

性能调节空气应用

如果在运行时出现内存泄漏,我们会尽快处理这些问题。我们鼓励开发人员使用以下反馈表(www.adobe.com/go/wish)将这些问题发送回我们的团队,以了解这些问题

如果您使用的是Ajax框架,那么您可能希望了解该特定框架是否存在已知的内存泄漏问题

所以,总结一下,是的,在构建桌面应用程序时,你应该总是担心内存问题——不管是用AIR还是C++。在开发应用程序时,应该监控应用程序的内存使用情况,以便尽早发现任何问题。实现这一点的一种方法是运行寿命测试——让你的应用程序通宵打开,看看内存是否在增加

一般来说,浏览器可用的工具也非常有限。我预计这将很快改变,因为浏览器供应商也开始在他们的浏览器中提供更多的钩子来识别内存使用情况。希望这有帮助

谢谢大家!

-抢劫


Adobe AIR产品经理

担心吗?对有什么事吗?没有。事实上我现在在MacOSX上遇到了问题。唯一问题较少的平台是Windows。