在 iOS (iPad) 上减少 phonegap、sencha touch 的内存占用

Posted

技术标签:

【中文标题】在 iOS (iPad) 上减少 phonegap、sencha touch 的内存占用【英文标题】:reducing memory footprint of phonegap, sencha touch on iOS (iPad) 【发布时间】:2012-02-08 13:43:18 【问题描述】:

我正在使用 Sencha Touch 1.1 和 PhoneGap 在 iPad 上部署代码。在 Instruments 中,内存使用量显示在 140MB 左右(虚拟内存),然后在某些地方确实上升到 200MB 以上,并且我的应用程序有时会由于我正在修复以减少 DOM 占用空间的大型列表而被杀死。我尝试从 Safari 中测试 sencha touch 应用程序,内存并没有增长到这些限制,Safari 启动时大约 160MB,它上升到 200+ MB,但大多数时候保持在 170-180MB 范围内。

我的下一个测试是弄清楚PhoneGap 框架的影响。当我安装 phonegap 并试用它时,示例 Hello world 应用程序似乎已经使用了大约 100 MB(虚拟内存)。我试图在网上搜索以确定如何减少这种足迹,但没有找到任何东西。

我的问题如下 - 我可以做些什么来减少 phonegap 占用空间,它甚至与帮助减少我的应用程序崩溃有关吗?我看到其他应用程序,如 Flipboard,它们使用更少的内存 (60-70 MB),并且试图理解为什么 phonegap 应用程序的基本占用空间是 100+ MB,而这个基于 phonegap + sencha-touch 的应用程序悬停在150 - 200 MB 范围。

阿南德

【问题讨论】:

【参考方案1】:

您应该查看删除 PhoneGap 应用加载的插件数量。这要么由 xml 文件(android、BB)或 plist(ios)控制。例如,如果您不使用联系人,则不要加载该插件等。

【讨论】:

已经在 PG plist 中删除了 XML 文件中的大部分内容。这仍然没有帮助,因为所有这些都是 100 MB。测试非常简单,只需在 XCode 中启动一个默认的 PG 项目,从 plist 中删除内容并运行和检测。如果这是正常的或预期的行为,那没关系,但预计 PG 会少用很多。【参考方案2】:

您说您在 Safari 中的应用大约有 160MB,所以我认为这(至少)不仅仅是 phonegap。因此,请尝试改进您的煎茶触摸应用程序。可能您不会销毁不使用的容器或类似的东西。查看此视频了解详情:https://vimeo.com/17882927

【讨论】:

是的,我在 Sencha touch 端修复了很多东西,但是我看到的是当我登录我的应用程序时,这意味着 sencha touch 已加载并且我的应用程序代码已加载,以及只有一个登录屏幕的最小 DOM,它已经是 135-140 MB。更大的贡献是电话差距及其 100 MB 的基础设施,因此希望看看这是否可以减少。 我已经做了一些事情,比如销毁不需要的项目,使用常见的事件处理程序,并且内存得到了改善,还开始使用 UxBufferedList 这有助于减少内存,但仍然有一些令人讨厌的副作用需要在 UI 中修复。所以现在内存受到了更多的控制,但仍然非常高。 您也可以尝试缩小您的 JS 文件。您还尝试过新的 Sencha Touch 原生包装器吗? 已经使用 sencha build jsb3 文件完成了 js 文件的缩小和构建,并且 css 处于生产模式。所以所有简单的事情都已经完成了,我正在寻找我能做的其他事情,更多的是在初创公司的 phonegap 方面。我也在尝试使用原生封装的 Sencha Touch 2.0 B2,看看这是否有助于减少占用空间。 感谢您对此进行调查。我经常使用 phonegap 开发应用程序,并且担心内存消耗,但我从来没有时间亲自检查它。请返回 ST2 原生打包的结果。【参考方案3】:

只是为了结束,转移到 Sencha 2.0 并使用 PhoneGap 2.0 内存使用量仍在 150 ~ 200 MB 的范围内,但现在应用程序上的所有使用情况我没有看到崩溃。我见过像 Flipboard 这样的应用程序消耗 350 MB 并且仍然可以工作,所以现在这不是问题。

基本的 Safari 移动浏览器占用的内存在 100 ~150+ 范围内,所以我不能指望使用量会下降很多。

【讨论】:

以上是关于在 iOS (iPad) 上减少 phonegap、sencha touch 的内存占用的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap 无法在 iPad 视网膜 mini iOS7 中使用相机

IOS中Phonegap高度变化?

带有 iPad 的 Admob PhoneGap 插件

Phonegap / Cordova Youtube 在 iOS 上嵌入视频不起作用

phonegap 构建 ios 闪屏

检查 Phonegap 应用程序是不是在 iPad 或 iPhone 上运行