移动webkit内存消耗

我们正在为移动设备(Android + iOS)开发HTML5应用程序。 但是最大的问题是内存消耗 – 内存使用量增长非常快,应用程序变得迟缓。

与HTML(JavaScript)应用程序中的内存泄漏作斗争的最佳实践,提示,工具,解决scheme等是什么?

PS我们只针对Webkit浏览器

Solutions Collecting From Web of "移动webkit内存消耗"

最近有关于这个问题的一些非常棒的文章。 有一些非常令人惊讶的对象创build的来源,除非你调整它,否则不会引起你的注意。 通常情况下,问题不是内存使用,而是实际收集应用程序缓慢泄漏内存所需的垃圾回收周期。

这篇文章是最近我读过的话题: http : //www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascript

至于打击/诊断问题的工具,谷歌浏览器的Speedtracer浮现在脑海。 当然,对Chrome进行调整并不能保证所有浏览器的调整,但大多数导致Chrome中创build对象的东西都是JS规范所常见的,因为它是由所有浏览器实现的。

要考虑的一个重要的事情是,RAM的使用和videoRAM的使用是不一样的。 一个最佳的做法是确定你的用户界面的哪些部分正在硬件加速,并确保他们很小(即一次适合在屏幕上)。 如果屏幕硬件的滚动部分加速过快,则会导致GPU撕裂/平铺和滞后滚动。 您可以使用iOS模拟器部分检测到这一点。 这篇文章简要介绍了这个想法: http : //devinsheaven.com/turn-your-iphone-wacky-and-make-your-iphone-application-better/

最后,每个工程师都经常碰到一堆JavaScript中常见的内存泄漏模式。 IBM有一个很好的名单。 我不能发布两个以上的链接,因为我是一个n00b,但你可以谷歌的“通用JavaScript内存泄漏”,这可能是第一个结果。

人们可能在Chrome中发现的其他一些诊断工具是任务pipe理器,时间轴面板和堆分析器。

浏览器 – 铬金丝雀(27.0.1447.3加那利)

  • 任务pipe理器:进入工具 – >任务pipe理器//右键单击标题选项卡,并选中“JavaScript内存”

  • 时间轴选项卡:工具 – >开发人员工具 – >时间轴//单击logging,做一些交互,然后停止logging

  • 堆分析器:工具 – >开发工具 – >configuration文件//单击“采取堆快照”

  • 远程debugging

  • 深度内存分析器

“3快照”技术//演示文稿“消除Gmail中的内存泄漏”