簡體   English   中英

Opera Mobile,離線Web應用程序開發和內存

[英]Opera Mobile, offline web app development, and memory

我正在開發一個數據收集應用程序,以便在運行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,但我想先嘗試使其工作。 就JS性能而言,我不認為Opera是狗,但也許比我想的還要糟糕。

雜亂無章的技術集合根本無法奏效,但是它需要更快,更穩定。 我很感激任何建議。

這是一個持久的JavaScript應用程序,還是您會不時刷新整個頁面?

在第一種情況下,您可能會發生內存泄漏。 您應該嘗試將其隔離。 這可能是您的錯,或是來自您使用的其中一個庫。 當您知道時,您可以決定要做什么。 或者,您可以不時地刷新頁面。

在后一種情況下,您應該刪除項目。 如果瀏覽器只是隨着時間的推移而停止工作,盡管您給了它明顯的釋放內存的機會,那么它就是廢話。

聽起來確實有些東西正在泄漏內存,據我所知,恐怕Opera Mobile / Gears組合還沒有經過大量測試。 因此,我最初的猜測是內存泄漏發生在Opera / Gears交互中。

(您可能知道,由於Opera核心是跨平台的,因此Opera的核心JS / DOM支持應該相對穩定,並且9.7中的“ Futhark” ES引擎已經使用了幾年,因此經過了很好的測試和穩定。)

我不知道這是多么實用的建議-但是您的方案是否有可能最大程度地減少Gears的使用或嘗試隔離會引起問題的Gears交互的特定功能? 例如,如果您經常使用GeoLocation來寫一個小頁面,它會顯示類似的症狀嗎?

到目前為止,您可能已經編寫了很多代碼:-/

實際上,我並不是在Opera Mobile 9.7的Widget端完全支持的功能之上,但是在Widget中可能有一些功能(例如fileIO),您可以使用這些功能來替換Gears功能並進行離線操作。

對於以后可能遇到此問題並尋求相同問題答案的任何人,只需為自己購買iPhone / iPod Touch並在Mobile Safari中進行開發即可。 這就是我最終要做的事情(使用persistence.js作為SQLite DB的ORM)。 至少暫時來說,這確實是一個優越的環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM