Opera Mobile,离线Web应用程序开发和内存

时间:2010-04-07 19:13:37

标签: jquery web-applications windows-mobile memory-management opera

我正在开发一个数据收集应用程序,用于运行Windows Mobile 6的HP iPAQ 211.我使用Opera Mobile 9.7和Google Gears将其作为离线网络应用程序(与您所知道的一起使用)。由于它是一个离线应用程序,它的大部分行为都非常依赖于Javascript。我正在使用Gears的LocalServer,Database和Geolocation组件,以及JQuery核心和一些用于表单验证和其他可用性调整的插件(没有jQuery UI)。我试图保守我的编程风格,尽可能释放或关闭资源,但Opera在使用大约10-20分钟后才慢慢死亡。 Javascript引擎停止响应,页面只加载一半,最终完全停止加载。我猜这是一个资源问题。

退出并重新启动浏览器可以解决问题,但只能暂时解决。 iPAQ配备128 MB RAM,大约85-87 MB可在复位后立即使用。只有Opera运行,仍然有大约50 MB未使用。

我的问题是:

  1. 是否有可能让Opera解决这个未使用的RAM?我了解到Windows Mobile 6的每个进程限制为32 MB,所以没有。
  2. Opera中或Windows注册表本身中的配置设置是否有助于提高性能?我知道在哪里调整,但是我发现的opera:config变量的描述不太有帮助。
  3. 在同一句话中询问内存管理和jQuery是否可笑?如果没有,有人有任何建议吗?
  4. 最后,鉴于我必须与之合作的平台,我的计划是否过于雄心勃勃?我知道Gears和Windows Mobile 6正在逐渐淘汰,但它们(理论上)足以满足我的需求。我可以放弃他们支持iPhone / iPod Touch,Mobile Safari和HTML5,但我想尝试先做这个工作。我不认为Opera在JS性能方面是一只狗,但也许它比我想象的要糟糕。
  5. 这种杂乱无章的技术集合起作用是一个小小的奇迹,但它需要更快,更稳定。我很感激任何建议。

3 个答案:

答案 0 :(得分:1)

这是一个持久的JavaScript应用程序,还是你不时刷新整个页面?

在第一种情况下,您可能有内存泄漏。你应该尝试隔离它。它可能是您的错,或来自您使用的其中一个库。如果你知道,你可以决定做什么。或者,您可以不时地进行页面刷新。

在后一种情况下,您应该放弃该项目。如果浏览器随着时间的推移而停止工作,虽然你给它提供了释放内存的明确机会,但它是废话。

答案 1 :(得分:1)

听起来确实有些东西正在泄漏记忆,据我所知,我担心Opera Mobile / Gears组合还没有经过大量的测试。因此,我最初的猜测是内存泄漏在Opera / Gears交互中。

(正如您可能知道的那样,由于Opera核心是跨平台的,因此Opera的核心JS / DOM支持应该相对稳定,9.7中的“Futhark”ES引擎已经使用了几年,因此经过了相当好的测试和稳定...)< / p>

我不知道这是一个多么实用的建议 - 但您的方案是否可以最大限度地减少Gears的使用或尝试隔离导致问题的Gears交互的特定功能?例如,如果您使用GeoLocation编写一个小页面,那么它会显示出类似的症状吗?

你现在可能已经编写了相当多的代码: - /

我实际上并不了解Opera Mobile 9.7中Widget端支持的内容,但是Widgets可能有一些功能(如fileIO),您可以使用这些功能来替换Gears功能并离线东西。

答案 2 :(得分:0)

对于任何可能在以后寻找相同问题答案的人来说,只需让自己成为iPhone / iPod Touch并在Mobile Safari中进行开发。这就是我最终做的事情(使用persistence.js作为SQLite DB的ORM)。至少在目前,这是真正优越的发展环境。