Opera Mobile, автономная разработка веб-приложений и память - PullRequest
0 голосов
/ 07 апреля 2010

Я разрабатываю приложение для сбора данных для использования на HP iPAQ 211 под управлением Windows Mobile 6. Я делаю это как автономное веб-приложение (следуйте тому, что вы знаете) с использованием Opera Mobile 9.7 и Google Gears. Будучи автономным приложением, оно сильно зависит от Javascript для большей части своего поведения. Я использую компоненты Gears LocalServer, Database и Geolocation, а также ядро ​​JQuery и пару плагинов для проверки формы и других настроек юзабилити (без jQuery UI). Я пытался быть консервативным с моим стилем программирования и по возможности освобождать или закрывать ресурсы, но Opera просто медленно умирает примерно через 10-20 минут использования. Движок Javascript перестает отвечать на запросы, страницы загружаются только наполовину и в конце концов перестают загружаться полностью. Я предполагаю, что это проблема с ресурсом.

Выход и перезапуск браузера решает проблему, но только временно. IPAQ поставляется с 128 МБ ОЗУ, около 85-87 МБ доступно сразу после сброса. При работающей только Opera остается около 50 МБ, которые не используются.

Мои вопросы таковы:

  1. Возможно ли заставить Opera обращаться к этой неиспользуемой оперативной памяти? Я узнал, что Windows Mobile 6 имеет ограничение 32 МБ на процесс, поэтому нет.
  2. Есть ли в Opera или в самом реестре Windows параметры конфигурации, которые помогут повысить производительность? Я знаю, где настроить, но описания переменных config: config, которые я нашел, не очень полезны.
  3. Смешно ли спрашивать об управлении памятью и jQuery в одном предложении? Если нет, есть ли у кого-нибудь предложения?
  4. Наконец, мои планы слишком амбициозны, учитывая платформу, с которой мне приходится работать? Я знаю, что Gears и Windows Mobile 6 уже выходят, но их (теоретически) достаточно для того, что мне нужно сделать. Я мог бы отказаться от них в пользу iPhone / iPod Touch, Mobile Safari и HTML5, но я хотел бы сначала попытаться сделать это. Я не думал, что Opera была собакой, когда дело доходит до выступления JS, но, возможно, это хуже, чем я думал.

То, что эта пестрая коллекция технологий работает вообще, является небольшим чудом, но оно должно быть быстрее и стабильнее. Я ценю любые предложения.

Ответы [ 3 ]

1 голос
/ 09 апреля 2010

Похоже, что что-то вызывает утечку памяти, и я боюсь, что комбинация Opera Mobile / Gears, насколько я знаю, не прошла много испытаний.Отсюда мое первоначальное предположение: утечка памяти связана с взаимодействием Opera / Gears.

(Как вы, возможно, знаете, поскольку ядро ​​Opera является кроссплатформенным, поддержка JS / DOM в ядре Opera должна быть относительно стабильной, а ядру ES "Futhark" в 9.7 уже несколько лет, поэтому он довольно хорошо протестирован и стабилен..)

Я не знаю, насколько это практично, но возможно ли для вашего сценария свести к минимуму использование Gears или попытаться изолировать специфические особенности взаимодействия Gears, которые вызывают проблемы?Например, если вы пишете небольшую страницу, используя, скажем, GeoLocation, много ли - будет ли она показывать похожие симптомы?

Вы, вероятно, уже написали достаточное количество кода: - /

На самом деле я не в курсе того, что именно поддерживается на стороне виджетов в Opera Mobile 9.7, но могут быть некоторые функции из виджетов (например, fileIO), которые вы можете использовать для замены функций Gears и выполнения автономных операций.

1 голос
/ 08 апреля 2010

это постоянное приложение JavaScript, или вы время от времени обновляете всю страницу?

В первом случае у вас, вероятно, утечка памяти. Вы должны попытаться изолировать это. это может быть ваша ошибка или вы пришли из одной из используемых вами библиотек. когда вы знаете, вы можете решить, что делать. или вы можете просто обновить страницу время от времени.

В последнем случае вы должны просто отбросить проект. Если браузер просто перестает работать со временем, хотя вы даете ему явную возможность освободить память, тогда это дерьмо.

0 голосов
/ 15 апреля 2010

Для тех, кто может столкнуться с этим позже и ищет ответы на те же проблемы, просто приобретите iPhone / iPod Touch и разработайте его в Mobile Safari. Именно это я и сделал (используя persistence.js в качестве ORM для БД SQLite). Это действительно превосходная среда для развития, по крайней мере, на данный момент.

...