我正在开发一个数据收集应用程序,用于运行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未使用。
我的问题是:
这种杂乱无章的技术集合起作用是一个小小的奇迹,但它需要更快,更稳定。我很感激任何建议。
答案 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)。至少在目前,这是真正优越的发展环境。