Adobe AIR, утечки памяти - PullRequest
2 голосов
/ 25 июня 2009

Мы все знаем, как веб-браузеры (такие как Firefox) наверняка будут заполнять потребление памяти, потому что мы постоянно выполняем код JavaScript (с веб-сайтов), который подвержен утечке памяти.

Я спорю о разработке приложения для настольного компьютера, и, учитывая мой опыт работы с Javascript / Css / HTML, я подумал, что попробую AIR, так что мне не придется использовать Java (например) и заниматься обучением все его вещи свинг GUI.

Проблема в том, что меня беспокоит утечка памяти в AIR, поскольку AIR - это просто веб-браузер с уровнем API для взаимодействия с операционной системой.

Можно ли беспокоиться об утечке памяти в AIR? Что мне с этим делать?

Ответы [ 2 ]

9 голосов
/ 15 июля 2009

Меня зовут Роб Кристенсен, и я являюсь менеджером по продукту в Adobe AIR. Во-первых, позвольте мне сказать, что довольно легко создать настольное приложение, независимо от базовой технологии, которое потребляет большой объем памяти и / или не освобождает память.

В следующем выпуске AIR мы рассмотрим предоставление некоторых дополнительных возможностей среде выполнения AIR, чтобы упростить выявление утечек памяти для приложений на основе JavaScript. Разработчики, создающие приложения на базе Flash или Flex, уже могут воспользоваться профилировщиком памяти, включенным в Flex Builder, чтобы отследить это. Мы надеемся сделать нечто подобное и для разработчиков JavaScript.

По моему опыту общения с разработчиками, утечки памяти часто происходят, когда объекты в памяти никогда не очищаются. Например, представьте клиент Twitter, в котором перечислены твиты пользователей, основанные на поисковом слове. С течением времени появляется больше результатов, и список становится длиннее. Если максимальное количество видимых твитов не ограничено, память, конечно, со временем будет увеличиваться. Вместо этого приложение должно наложить разумное ограничение на количество элементов, отображаемых в этом списке.

Существуют некоторые доклады, в которых описываются лучшие практики обработки памяти в AIR. Хотя примеры в этой статье в основном написаны на ActionScript, те же понятия применимы и к JavaScript.

Настройка производительности приложений AIR http://www.adobe.com/devnet/air/articles/air_performance.html

Если во время выполнения возникают утечки памяти, мы прыгаем на них как можно быстрее. Мы призываем разработчиков знать о таких проблемах, отправляя их обратно в нашу команду, используя следующую форму обратной связи (www.adobe.com/go/wish).

Если вы используете инфраструктуру Ajax, вы можете посмотреть, есть ли известные проблемы с утечками памяти для этой конкретной платформы.

Итак, подводя итог, да, вы всегда должны беспокоиться о памяти при создании настольного приложения - будь то с AIR или C ++. При разработке приложения вы должны отслеживать использование памяти приложением, чтобы вы могли выявить любые проблемы раньше, чем позже. Один из способов сделать это - запустить тесты на долговечность - оставить приложение открытым на ночь, чтобы проверить, не увеличивается ли объем памяти.

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

Спасибо!

-Rob

Менеджер по продукту, Adobe AIR

1 голос
/ 25 июня 2009

Конечно. Я видел, как приложения AIR в Linux со временем поглощают гигабайты памяти. Это настоящий блокатор для меня и мешает мне их использовать.

Тем не менее, другие люди на других платформах не имеют проблем с этим. В конечном итоге вам нужно решить, что будет использовать большинство вашего рынка и как они будут затронуты любыми проблемами в AIR (или других).

Если это не так важно (но это все еще проблема), отправьте отчеты об ошибках и надеемся, что Adobe исправит ошибки.

...