移动webkit内存消耗

时间:2012-03-23 16:12:18

标签: javascript android ios webkit

我们正在开发适用于移动设备的HTML5应用程序(Android + iOS)。但是最大的问题是内存消耗 - 使用的内存量正在快速增长而应用程序变得迟钝。

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

P.S。我们仅定位于Webkit浏览器

2 个答案:

答案 0 :(得分:7)

最近有关于这个主题的一些非常好的文章。有一些非常令人惊讶的对象创建源,除非你对它进行了调整,否则它们并没有引起你的注意。通常,问题不在于内存使用,实际上是收集内存所需的垃圾收集周期,应用程序正在慢慢泄漏。

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

就打击/诊断问题的工具而言,谷歌Chrome的Speedtracer会浮现在脑海中。当然,调整Chrome并不能保证对所有浏览器进行调整,但是导致Chrome中创建对象的大部分内容都是JS规范所共有的,因为它是由所有浏览器实现的。

需要考虑的一件重要事情是RAM的使用和视频RAM的使用并不相同。最佳做法是确定UI的哪些部分是硬件加速的,并确保它们很小(即一次性适合屏幕)。如果您的屏幕硬件加速了很大的滚动部分,您将获得GPU撕裂/平铺和滞后滚动。您可以使用iOS模拟器部分检测到这一点。本文简要介绍了这个想法:http://devinsheaven.com/turn-your-iphone-wacky-and-make-your-iphone-application-better/

最后,JavaScript中存在许多常见的内存泄漏模式,每个工程师都会不时遇到这种模式。 IBM有一个很好的列表。我不能发布超过两个链接,因为我是一个n00b,但你可以谷歌搜索“常见的JavaScript内存泄漏”,它可能是第一个结果。

答案 1 :(得分:3)

人们在Chrome中可能会发现有用的其他一些诊断工具包括任务管理器,时间轴面板和堆配置文件。

浏览器 - Chrome Canary(27.0.1447.3 canary)

  • 任务管理器:转到工具 - >任务管理器//右键单击标题选项卡,然后选中“JavaScript内存”

  • 时间轴标签:工具 - >开发者工具 - >时间轴//点击记录,进行一些互动,然后停止记录

  • Heap Profiler:工具 - >开发人员工具 - >个人资料//点击'Take Heap Snapshot'

  • 远程调试

  • 深度记忆分析器

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